-1

在Android中Oreo爲什麼bound services仍然允許,而(Started Services & IntentServices)是不允許的。保持綁定服務不受後臺執行限制的原因Oreo

假設我有一個綁定的服務,我綁定了我的活動的oncreate()方法,並將其解除綁定到我的活動的ondestroy()方法中。現在,當用戶來到這個活動,並按​​,因爲我的app goes in background現在無限期的時間這個綁定服務將使用資源,我認爲開發人員想從Oreo刪除,所以你不認爲是什麼原因在保留綁定服務的情況下,如果它們也會浪費內存資源。

回答

1

在Android奧利奧爲什麼綁定服務仍然允許,而(已啓動服務& IntentServices)是不允許的。

所有這些服務都是允許的。但是,啓動的非前臺服務只能運行約1分鐘。

現在的時間無限期量這一上限的服務將使用資源

Android將一段時間後終止您的後臺進程,比以前沒有什麼不同。純綁定的服務不會提高流程的重要性;只有一個開始的服務。

但是,綁定服務的進程的重要性由服務自己的進程和任何綁定客戶端的進程來決定。這就是爲什麼綁定服務不會直接受到Android 8.0變化的直接影響的原因—服務的生命由客戶管理的多於服務本身。因此,在服務受核心操作系統進程(例如NotificationListenerService)綁定的情況下,系統可以有效地控制該服務需要的時間。就你而言,由於客戶端和服務在同一個應用程序和相同的進程中,所以你的進程可以在後臺正常結束。

+0

從文檔中提到的時間是1分鐘'一個已啓動的非前臺服務只能運行約1分鐘嗎?這是否意味着如果我的服務能夠在一分鐘內完成工作,那麼我可以毫無問題地使用它? –

+1

@SudhanshuGaur:[docs](https://developer.android.com/about/versions/oreo/background.html#services)說「幾分鐘」。在測試中,它似乎是大約一分鐘。 – CommonsWare

+0

那麼在哪種情況下綁定的服務不會正常終止? –