0

私はスレッドを作成して開始し、メソッドの1つで、スリープ後にアプリを閉じます。理由を理解できません。何か手がかりはありますか?これが私のコードです:

btn.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                    if(!toggleRemove){
                        grupo.increment();
                        vibrate();

                    }else
                        grupo.decrement();
                    showToPanel(grupo);
                    new Thread(){
                        public void run(){
                            try {
                                sleep(3000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            showToPanel(null);
                        }
                    }.start();

                }

            });

よろしくお願いします!!

代わりにこれを使用して修正しました:

btn.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                    if(!toggleRemove){
                        grupo.increment();
                        vibrate();

                    }else
                        grupo.decrement();
                    showToPanel(grupo);



                    new Handler().postDelayed(new Runnable(){
                        @Override
                        public void run(){
                           showToPanel(null);
                        }
                    }, 3000); 

                }

            });
4

1 に答える 1

2

クラッシュするバグを投稿するときは、完全なスタック トレースを投稿してください。しかし、私の推測では、showToPanel が UI に変更を加えるのでしょうか? その場合、別のスレッドでは実行できません。メイン スレッドで実行する必要があります。これを行う最善の方法は、遅延メッセージをハンドラーに投稿し、そこで UI を変更することです。これは、他のスレッドで実行されるスリープ以外の実際の作業がないためです。

于 2013-03-04T21:20:34.610 に答える