突破Android O 系統對Service的限制

接着上一篇《android O 對Service的限制【Background Execution Limits】》內容。java

咱們將解決下面兩個問題,並提出一個有趣的問題。android

  • app處在空閒期(idle)時,如何啓動Service?
  • 在App進入空閒期(idle)時,如何讓Service不被當即回收?

1. App處於空閒期時,如何啓動一個Service?

這種方式啓動Service,將不受系統限制。spa

activity.getApplication().bindService(intent, connection, Service.BIND_AUTO_CREATE);
複製代碼



2. 在App進入空閒期時,如何讓Service不被當即stop?

前面咱們提到,普通的Service,在App進入空閒期時,將會被系統回收。code

咱們有一個修飾詞 「普通的」 Service。cdn

那什麼樣的Service是不普通的呢?換句話來講,什麼樣的Service,在APP進入空閒期時不會被stop。對象

Application.bindService()綁定的Service。 對你沒看錯,必定要是Application對象綁定上的Service纔不會被Stop。 必定要是Application對象bindService()

必定要是Application對象bindService()

必定要是Application對象bindService()

若是是僅僅是被Activity對象綁定的話,APP進入空閒期後,Service依然都會被stop。

Intent in = new Intent(MainActivityV2.this, Service4.class);
    activity.getApplication().bindService(intent, connection, Service.BIND_AUTO_CREATE);
複製代碼



3. bind的方式啓動Service依然存在缺陷

咱們沒法經過Intent與Service通訊。 例如:之前咱們能夠經過 Context.startService(intent) 發送Inent給Service. 顯然如今咱們不能調用 經過Context.startService(intent) 發送Inent給Service.

  • 那麼咱們應該如何發送Intent給Service,來實現與Service的通訊呢? 這是一個值得思考的問題。




那麼問題來了,咱們應該如何發送Intent給Service,來實現與Service的通訊呢?

下一篇一塊兒來討論這個有趣的問題。



點這裏,查看大叔的博客大綱







​ 讚美是一種美德,點個贊 再走啊,老鐵

weixin_2dcode
相關文章
相關標籤/搜索