运行线程让Android中的应用程序崩溃

时间:2016-08-18 13:56:47

标签: android json multithreading

我创建了线程来从网站上获取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();

}

4 个答案:

答案 0 :(得分:1)

在run()方法中,您需要定期检查ThreadName.interrupted()

的状态

这里有一个很好的教程:http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html

答案 1 :(得分:1)

JVM将调用

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数据