Android - 在我的方法上使用线程强制关闭我的应用程序

时间:2013-03-04 21:18:41

标签: android multithreading sleep

我正在创建一个线程并在我的一个方法中启动它,在睡眠之后,应用程序才关闭: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); 

                }

            });

1 个答案:

答案 0 :(得分:2)

发布崩溃的错误时请发布完整的堆栈跟踪。但我的猜测是showToPanel对UI进行了更改?如果是这样,你不能在另一个线程上执行此操作,必须在主线程上执行此操作。执行此操作的最佳方法是将延迟消息发布到处理程序并更改其中的UI,因为除了在另一个线程上执行睡眠之外没有其他真正的工作。