0
這些方法在擴展Service的類中實現。每次按下按鈕時都會啓動一項新服務。多線程生命週期中的多服務
如果按下按鈕一次,LogCat會輸出我期望的內容,其中包括「Service onDestroy」的最終輸出。但是,當按鈕被按下兩次時,第一次服務結束之前的第二次「Service onDestroy」。第一項服務完成後僅顯示一次,第二項服務打印出「服務正在運行」日誌的其餘部分,但不打印「Service onDestroy」。
有誰能告訴我爲什麼?謝謝!
public int onStartCommand(Intent intent,int flags, int startId) {
Log.i(TAG,"Service onStartCommand " + startId);
final int currentId = startId;
Runnable r = new Runnable() {
public void run() {
for (int i = 0; i < 3; i++) {
long endTime = System.currentTimeMillis() + 10*1000;
while (System.currentTimeMillis() < endTime) {
synchronized(this) {
try {
wait(endTime - System.currentTimeMillis());
}catch (Exception e) {
}
}
}
Log.i(TAG,"Service running");
}
stopSelf();
}
};
Thread t = new Thread(r);
t.start();
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG,"Service onBind");
return null;
}
@Override
public void onDestroy() {
Log.i(TAG,"Service onDestroy");
}