我有一个运行时的屏幕被打开,当我iput手机睡觉的服务,服务和线程应该停止如何杀死服务中的线程?
我设法停止服务,但线程仍在运行,我该怎么杀死线程?
void runAppCheck(){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);
mHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
getForegroundApplication();
compareResults();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean screenIsOn = pm.isScreenOn();
if (!screenIsOn) {
Log.i(TAG ,"Screen is OFF, stopping service");
stopSelf();
//TODO stop thread
}
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}
}).start();
如何正确地停止Java线程已经讨论过很多次,尤其是在StackOverflow上。为什么您在搜索时找到的任何解决方案都不够? – Trevor 2013-03-11 18:37:53
因此,如果手机屏幕关闭,这段代码每隔10秒看一次? – 2013-03-11 18:38:01
我找到的解决方案不起作用,其中一个已被弃用,而.interrupt()给了我错误。 否代码会检查每10秒在前台运行的应用程序。 – DoubleP90 2013-03-11 18:41:36