aplikasi mogok diCreate, karena Timer [ditutup]

Saya mempunyai masalah dengan aplikasi saya yang mogok ketika saya mencoba kode ini? Saya ingin saya terus-menerus memeriksa apakah MediaPlayer (MP) sedang diputar, dan jika ya, saya ingin Teks terbaca "Sedang Diputar" - Tetapi jika tidak diputar, saya ingin teks terbaca "Tidak Diputar".

Saya tidak mendapat peringatan apa pun dari Eclipse, tetapi saat saya mengekspornya, crash saat dimuat. Saya tahu kode untuk mengatur TextView tidak ada tetapi bukan itu masalahnya. (Saya pikir) Jika ada cara lain untuk melakukan ini, saya akan senang untuk mendorong ke arah yang benar.

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
                      //The Timer
                                Thread playingtimer = new Thread (){
                                    public void run() {
                                        try{
                                            int time = 1;
                                            while(time > 0) {
                                            sleep(100);

                                            if (MP.isPlaying()){ 
                                //set the TextView here "Now Playing"
                                            }
                                            else 
                                //set the TextView to "NOT Playing"
                                            }
                                        } 
                                        catch (InterruptedException e) {
                                        e.printStackTrace();
                                        }
                                        finally{

                                        }
                                    }
                                };
                                playingtimer.start();

person ZimZux    schedule 01.10.2013    source sumber
comment
Posting Logcat. Sangat sulit untuk mendiagnosis kerusakan tanpanya.   -  person Prmths    schedule 01.10.2013


Jawaban (2)


Saya tahu kode untuk mengatur TextView tidak ada tetapi bukan itu masalahnya. ( menurut saya )

Justru itulah masalahnya. Anda mencoba memperbarui View dari latar belakang Thread. Anda harus menggunakan runOnUiThread(), Handler, atau AsyncTask untuk memperbarui UI.

Jawaban ini membahas tentang handler dan asynctask

Contoh runOnUiThread

person codeMagic    schedule 01.10.2013
comment
Manakah dari berikut ini yang paling mudah dipelajari? - person ZimZux; 01.10.2013
comment
Saya suka AsyncTask tetapi runOnUiThread() juga cukup mudah - person codeMagic; 01.10.2013
comment
Saya telah memposting beberapa tautan ke contoh sehingga Anda dapat melihat apa yang ingin Anda ikuti. - person codeMagic; 01.10.2013
comment
terima kasih banyak... saya telah berjuang dengan ini beberapa jam terakhir.. - person ZimZux; 01.10.2013

Masalahnya di sini adalah jika Anda mencoba mengubah TextView dari pengatur waktu tersebut, maka akan macet, karena salah satu aturan terpenting di Android adalah Anda tidak dapat mengubah tampilan apa pun dari thread mana pun selain thread utama, dan Anda mencoba untuk memodifikasinya. ubah dari thread pekerja khusus Anda, agar dapat berfungsi, gabungkan kode yang mengubah tampilan menjadi metode runOnUIThread, atau buat mekanisme Handler Anda sendiri untuk menjalankan kode tersebut di Thread utama.

Semoga ini membantu.

Salam!

person Martin Cazares    schedule 01.10.2013