退出活动或应用程序时,我无法停止此线程。
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和线程的东西。请帮忙。
答案 0 :(得分:1)
在Activity中添加一个布尔标志,比如“shouldThreadRun”,在onResume()中设置为true,在onPause()中设置为false
在Thread的run()中,检查Activity是否仍在运行
if(shouldThreadRun){
doSomething();
myThread.handler.postDelayed(this,30*1000);
}