看板 AndroidDev 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: : 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(); : } 下個問題:我有application which starts a service while the app starts. Somehow I started the app again for successive tasks, then the srervice was created again and the previous large task was lost. Need the service be to detect the previous running instance of it before creating? And how to make it feasible? Thank you. 前段用手機發的,再補充主要的資訊: 目前我的軟體專案的狀態是搭著application把service放出去 (也就是從manifest 定義service,一開app就跟著有service) Service讓activity bindService把task送上去,而當service接到task時再放 AsyncTask出去執行task. 當service把AsyncTask送出去時,會先PARTIAL_WAKE_LOCK, 送完之後會解lock. 放出去的工作在執行之前也會放lock,工作完之後也會解lock. 在這個部份lock都是使用service的context. 我猜想,service放出去久了之後會被請出去,原因可能是,當我有一批數十個task 送上去時,數十個bindService的時候比較不會被系統請出去,但是,binding完了 並且關掉app好一陣子之後, 再重新啟動app,會認為要把service重新啟動. 一旦重新啟動service,之前service放出去的threads一起解除. -- posted from android bbs reader on my motorola MB525 https://market.android.com/details?id=com.bbs.reader -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.214.119.197
LaPass:我之前會去檢查,有的執行中的話就用連接的,沒的話就創建 04/20 14:01
LaPass:,搞不好有比較好的方法也說不定.... 04/20 14:01
LaPass:在連結service時選一下 flag,那邊有幾種flag可以用 04/20 14:02
※ 編輯: yauhh 來自: 59.112.228.249 (04/20 21:59)