如何关闭未使用的线程?

时间:2012-03-21 04:54:17

标签: android thread-safety

我正在努力使用Android应用来处理新的事情。我在我的应用程序中创建了一个线程,持久消息订阅者,在后台等待来自服务器的消息。当我退出我的应用程序时,该线程仍在运行。实际上,当线程无法连接到服务器时,它会反复尝试连接。所以我想检查我的应用程序是关闭还是活着,否则我想让我的应用程序发送一些消息给线程在它停止之前停止。

在Android中有哪些方法可以做到这一点?请让我听听你的知识。提前谢谢。

2 个答案:

答案 0 :(得分:2)

是的,有一个简单的模式。你在onResume()开始你的主题,并在onPause()上停止。

在你的线程的runnable中,你有一个像

这样的循环
@Override
public void run() {
    while (mRunning) {
      // re-try server
    }
}
你的活动中的

覆盖onResume()之类的,

@Override
protected void onResume() {
    super.onResume();

    mRunner = new Runnable { .... );
    new Thread(mRunner).start();
}

覆盖onPause()以停止线程,

@Override
protected void onPause() {
    super.onPause();

    if (mRunner != null) {
      mRunner.setRunning(false);
      mRunner = null;
    }
}

这当然会停止循环,run()退出,线程完成。

一般情况下,对于您注册的任何类型的侦听器或您启动的线程,您都遵循此模式。在onResume()上设置,然后在onPause()中删除。

答案 1 :(得分:0)

你无法销毁...只有android会在需要时停止线程..你无法停止或销毁它...而是尝试这样.. 在线程中设置一些标志..以检查它应该何时运行以及何时应该停止..像这样......

 void run()
{
 while(bool){
   //My code 
 }
 }

现在在你的活动中 将bool值更改为false ..

@Override
 protected void onStop() {
  // TODO Auto-generated method stub
  super.onStop();
bool=false
   }