1
我目前正在對我的第一個Android應用程序,我已經遇到一個問題。如何阻止我的線程,如果我的服務也停止了,我會怎麼做?
我的應用程序應該使用一個服務在後臺進行計數,我創建一個新的線程來處理這個問題。如果我不停止我的Service的onDestroy()方法中的線程,我的手機會給我提示「不幸的是,(我的應用程序)已停止。」每當我關閉應用程序。我需要以某種方式阻止它,我試圖用做:
while(!Thread.currentThread().isInterrupted()){
**my code**
}:
然後打斷它在的onDestroy()方法。 它的工作原理,但它使我的應用算非常快,所以我想知道,如果這是可以做到不改變我的代碼functionaliy任何其他方式。
而且,由於我的線程被在的onDestroy方法停止了,我想我的服務停止爲好。即使我的應用程序已關閉,是否有任何方法可以讓我的服務繼續運行?
這裏是我的代碼:
public class CounterService extends Service {
private Handler handler;
private int time = -1;
private boolean isActive;
private Intent timeBroadcaster;
private Runnable counter;
private Thread serviceCounter;
@Override
public void onCreate(){
super.onCreate();
handler = new Handler();
timeBroadcaster = new Intent();
timeBroadcaster.setAction("EXAMPLE_BROADCAST");
counter = new Runnable() {
@Override
public void run() {
isActive = ((PowerManager) getSystemService(Context.POWER_SERVICE)).isInteractive();
if (isActive) {
handler.postDelayed(this, 1000);
time += 1;
} else {
if (time > 5) {
//log
}
time = 0;
handler.postDelayed(this, 1000);
}
timeBroadcaster.putExtra("counter", time);
sendBroadcast(timeBroadcaster);
}
};
serviceCounter = new Thread(counter);
serviceCounter.start();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy(){
//serviceCounter.interrupt();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}