作者yauhh (喲)
看板AndroidDev
標題[問題] service維持運作
時間Thu Apr 19 00:08:23 2012
OS版本: 2.1
各位好, 最近我練習service保持背景執行,由於對service運作情況沒有信心,
所以做一份簡單的外部架構來測試,包含一個Activity負責啟動Service,以及
一個Service.
我把WakeLock的設定放在Service的onStartCommand,設定為PARTIAL_WAKE_LOCK.
剛開始觀察,service有執行一陣子,按電源鈕關掉螢幕也還會運作一陣子.
但是離開去忙一陣子之後回來看,發現service已經被系統請出去了.
請問程式這樣的運作情況對嗎? 可以相信service能夠如實掌握該運作的工作嗎?
程式片段如下:
........................... extends Service {
private static PowerManager.WakeLock wakeLock = null;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
HelloWorldService.acquireLock(HelloWorldService.this);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public static synchronized void acquireLock(Context context) {
if (wakeLock == null) {
PowerManager powerMan =
(PowerManager)context.getSystemService(
Context.POWER_SERVICE);
wakeLock = powerMan.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
"idv.world.hello");
wakeLock.setReferenceCounted(true);
}
wakeLock.acquire();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.225.20
※ 編輯: yauhh 來自: 59.112.225.20 (04/19 00:08)
推 LaPass:IntentService會比較好用 04/19 09:16
→ yauhh:這東西可以慶菜就保持service存活嗎? 04/19 11:45
→ nopeace:onStartCommand時回傳START_STICKY,service死了會被系統 04/19 12:11
→ nopeace:叫起來 04/19 12:12
推 LaPass:在跑 onHandleIntent 的時候,不會被砍掉。跑完後就會。 04/19 12:37
→ LaPass:在onHandleIntent裡把執行緒block住,要關時再解開 04/19 12:38
→ LaPass:IntentService是被設計成.... 長時間在背景工作用的,一般 04/19 12:40
→ LaPass:Service只要沒有activity跟他連結,就可能被砍。 04/19 12:40
推 doom3:能不用維持就不要維持吧 現在一堆使用者都會裝一些APP來砍 04/19 18:19
→ doom3:你的service 然後程式壞掉不能跑還會怪你 XD 04/19 18:20
→ yauhh:拜託,我要上傳檔案啊,不維持背景運作就沒輒了 04/19 19:15
推 doom3:阿 我說的是指24小時待命那種 04/19 19:21