在我的應用程序中,我利用後臺服務來執行一些後臺數據提取。我啓動服務使用活動和聯編服務
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
mConnection是ServiceConnection的實例。
在服務中,我一直提取一些數據並驗證它,如果檢查通過,我播放聲音。所以當這種情況發生時,用戶可以在活動屏幕上按下停止按鈕。這會調用解除綁定(mConnection),這會破壞停止聲音的服務。 我的查詢是,雖然服務在後臺運行,同時Android殺死了活動,那麼用戶將如何停止服務。我需要mConnection來解除綁定服務,並且我不能將mConnection存儲在onSaveInstanceState中的Bundle中。
使用IntentService和Broadcast Receiver(startService調用)而不是綁定服務會不會更好?因爲它只是您想要執行的特定後臺任務,而不是許多不同的任務? –
嗨馬克,我想維護活動用戶界面,以便如果用戶想停止後臺服務之間,然後他/她可以用STOP按鈕來做到這一點。 IntentService一旦啓動,將不受用戶控制。 – Mandroid
爲什麼不在服務中使用Executor/Threadpool/Runnable /,這樣您仍然可以通過向Executor上的shutdownNow()發送命令來進行控制 - 這樣服務就不會綁定到Activity生命週期,並且您可以維護控制服務中的執行線程。 –