看板 AndroidDev 關於我們 聯絡資訊
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