0

我正在创建一个线程并在我的一个方法中启动它,在睡眠之后,应用程序刚刚关闭:s 无法理解为什么.. 任何线索?这是我的代码:

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 回答