2017-05-05 28 views
0

我漫步,如果Android只有「保證」,以保持服務活着,如果它作爲前臺服務運行。但是如果我在同一個進程中將兩個服務彼此相鄰地運行,那麼如果在前臺運行一個服務作爲普通服務。第二項服務是否得到相同的保證?旁邊的正常服務的前臺服務

main process: 
    ForegroundService - Service with foreground flag 
    MyService   - Normal Service 

low memory event -> 
    Scenario 1: 
    keep ForegroundService and keep MyService 

    Scenario 2: 
    keep ForegroundService and kill MyService 

注: 我沒有在Android 7和5的一些調查,在這兩種情況下,如果內存不足,並開始殺死其他內存消費者單個運行前景的服務將保持活着的過程中的所有服務。但是,如果Android運行時間很短,它會殺死整個進程,而不僅僅是刪除單個進程。

回答

0

如果您在清單中每個服務定義的過程,那麼它只要保證

<service 
     android:name=".MyService" 
     android:enabled="true" android:process="myporcee" 
     android:exported="true"></service> 
+0

這不是我的問題的答案。 Android同時運行兩個服務(主進程),但它仍然可以強制停止其他非前臺服務之一。 – joecks

+0

因此,其他解決方案是在某些週期性時間重新啓動服務或使用警告,請不要使用任何清理程序或防病毒應用程序 –

0

文件說,它可能會殺死普通的服務,而不是一個,開始作爲前景。如果要同時保留兩項服務,則可以將 普通服務綁定到前臺服務,以便兩個服務具有相同的優先級。