2016-08-18 80 views
-1

我创建了线程以从网站中提取json数据,然后分析数据并显示通知。运行线程在android中使应用程序崩溃

但是,当我关闭应用程序后,线程仍然工作后,再次打开应用程序的应用程序崩溃。任何解决方案而且我用的是中断()的onDestroy生命周期

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Toast.makeText(getApplicationContext(),"Closed",Toast.LENGTH_SHORT).show(); 
    //Configuration configuration = new Configuration(); 
    //condition = 1; 
    test.interrupt(); 
    //test.destroy(); 

} 
+1

堆栈跟踪说什么?如果你尝试触摸已经被破坏的Activity的UI,它会崩溃。你如何处理中断?我认为你的线程没有任何睡眠,所以中断不适合你。尝试使用AsyncTask或IntentService + Broadcast来做异步的东西。 – pawelo

+0

W/dalvikvm:threadid = 1:线程退出时未捕获异常(group = 0x418c0da0)这就是错误 –

回答

0

onDestroy()方法将被JVM调用,所以如果你关闭应用程序onDestroy()调用不能保证。尝试将代码从onDestroy()移至onStop()方法,onStop()将在您关闭应用程序时调用。

0

我会建议使用AsynTask进行其他呼叫。 参考:Dev Forum

如果你很难按使用线程,然后尝试在onPause()中调用它,在那里我们可以做一些繁重的提升与其他重写的方法相比。

@Override 
public void onPause(){ 
     super.onPause(); 
     test.interrupt(); 
} 

参考:How to use

0

您必须确保中断功能真的叫,因为放的onDestroy interupt()绝不是保证将被调用。尝试将它放在onStop()
或使用asynctask获取json数据