突破Android O 系統對Service的限制

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

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

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

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

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

activity.getApplication().bindService(intent, connection, Service.BIND_AUTO_CREATE);



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

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

我們有一個修飾詞 “普通的” Service。

那什麼樣的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的通信呢?

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

原文鏈接:https://juejin.im/post/5dd16fb75188254eec44139c



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







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

weixin_2dcode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章