[問題] IntentService怎麼用?
我想做比較穩定的即時service,
基本上不需要service長期運作,只要想要的時候可以叫得醒service就好,
然後,一旦派送工作到service,最好service可以運作到工作完成.
就算app關掉了,已經送上service的工作也要繼續完成.
聽說IntentService可以管理一些thread,我頗心動,就將舊程式模型修改
為IntentService.
舊程式是啟動app時會啟動service,然後可以即時bindService把工作派上去.
bindService時有開partial wake lock和wifi lock,然後service會啟動AsyncTask,
AsynTask中也開wake lock和wifi lock (使用service context).
如果有一百個工作,就會發送一百個AsyncTask;這些AsyncTask共搶一個lock.
運作起來,如果app還開著時都會運作,而如果app關掉,就看情況,通常是大批工作
的後面一大段AsyncTask-s都不見. 我猜是因為當時service已經結束.
修改為IntentService的方式,我查了手冊及例子,覺得好像是把
... extends Service {
改成
... extends IntentService {
這樣是基本. 接著看到的例子說,要啟動就是丟資料到intent然後用startService
方式派上去,但我看這樣應該是只有IntentService啟動時會onHandleIntent吧?
另外,應該也是照樣使用bindService. 整體來說,我舊程式改成新程式就是
把Service改成IntentService而已.
後來測試新程式的運作情況,覺得好像與舊程式很接近. 也對,其實就是沒改過.
那請問IntentService怎麼用可以做到本文第一段所說的需求呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.229.204
※ 編輯: yauhh 來自: 59.112.229.204 (04/26 22:49)
推
04/26 23:20, , 1F
04/26 23:20, 1F
→
04/26 23:24, , 2F
04/26 23:24, 2F
→
04/26 23:25, , 3F
04/26 23:25, 3F
推
04/26 23:27, , 4F
04/26 23:27, 4F
→
04/26 23:29, , 5F
04/26 23:29, 5F
→
04/26 23:32, , 6F
04/26 23:32, 6F
推
04/26 23:55, , 7F
04/26 23:55, 7F
→
04/26 23:55, , 8F
04/26 23:55, 8F
→
04/26 23:55, , 9F
04/26 23:55, 9F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章