Android 自訂Service 使用時的個人體會

來源:互聯網
上載者:User

情境:

Activity              -> 顯示 progressDialog           -> 擷取資料從service

 

Activity 顯示資料 <- cancle progressDialog       <- Service 返回資料

 

1 如果service擷取擷取資料時間很長,比如從網路中擷取資料 可能產生逾時。那麼 這種情況下,應該使用單獨的線程來處理。否則,就會因為service進程長時間掛起 而被系統kill掉,會彈出一個對話方塊 是否停止該進程活等待。但如果使用單獨的線程來處理,當再次來一個相同的請求的時候,是不會被阻塞的,所以對於這個長時間處理的,還需要一個隊列來管理請求。

 

2 關於onStart和onReceive的使用。二者本質的差別是,onStart是一定會執行的,但是onReceive在service沒有啟動的情況下是不會被執行的。 所以為了確保你的請求一定被執行,使用onStart比較保險。但是 onStart的啟動函數startService需要知道是service的名字,這在某些情況下是不知道的。而onReceive 沒有這個要求。

 

3  一旦產生了向1中所描述的kill的情況,我們還是有機會補救的 就是 onDestroy 中處理,清理progress dialog.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.