我有一個運行時的屏幕被打開,當我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