无法阻止android线程

时间:2014-12-06 12:50:20

标签: android multithreading android-handler

退出活动或应用程序时,我无法停止此线程。

public class MyThread extends Thread {
        public Handler handler;
        @Override
        public void  try{
                Looper.prepare();
                handler = new Handler();
                Looper.loop();
        }
    }
    ...

myThread = new MyThread();
myThread.start();

final Runnable runnable = new Runnable() {
       @Override
       public void run(){
             doSomething();
             myThread.handler.postDelayed(this,30*1000);
       }
};
myThread.handler.post(runnable);

@Override
public void onStop(){    
       myThread.handler.removeCallbacksAndMessages(null);
       myThread.handler.getLooper().quit();   
       myThread = null;          
}

我可以确认所有的onStop()代码都已运行,但是在退出应用程序后,logcat仍会显示正在运行的线程。

我认为即使我取下电池并用大锤砸碎设备它仍然会继续运行,我已经尝试了所有东西。 :〜)我必须遗漏一些关于处理程序,loopers和线程的东西。请帮忙。

1 个答案:

答案 0 :(得分:1)

在Activity中添加一个布尔标志,比如“shouldThreadRun”,在onResume()中设置为true,在onPause()中设置为false

在Thread的run()中,检查Activity是否仍在运行

if(shouldThreadRun){
    doSomething();
    myThread.handler.postDelayed(this,30*1000);
}