我创建了线程来从网站上获取json数据,然后分析数据并显示通知。
但是,当我关闭应用程序后,线程仍在运行,再次打开应用程序,应用程序崩溃。任何解决方案我还在 onDestroy 生命周期中使用 interrupt()
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(getApplicationContext(),"Closed",Toast.LENGTH_SHORT).show();
//Configuration configuration = new Configuration();
//condition = 1;
test.interrupt();
//test.destroy();
}
答案 0 :(得分:1)
在run()方法中,您需要定期检查ThreadName.interrupted()
这里有一个很好的教程:http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html
答案 1 :(得分:1)
onDestroy()
方法,因此如果您关闭应用onDestroy()
,则无法保证通话。尝试将代码从onDestroy()
移至onStop()
方法,并在关闭应用时调用onStop()
。
答案 2 :(得分:1)
我建议使用AsynTask做Rest Call。 参考:Dev Forum
如果您努力使用该线程,请尝试在onPause()中调用它,与其他重写方法相比,我们可以做一些繁重的工作。
@Override
public void onPause(){
super.onPause();
test.interrupt();
}
参考:How to use
答案 3 :(得分:1)
你必须确保中断函数真的被调用,因为在onDestroy()中输入中断永远不会被调用。试着把它放在 onStop()中
或使用asynctask获取json数据