2013-04-18 126 views
1

我有在該命令的主要活動啓動的服務的Android應用程序:服務沒有正確關閉

bindService(new Intent(ctx, MyService.class), _connection, Context.BIND_AUTO_CREATE); 

主要activty不excatly自認倒黴服務(這就是爲什麼我didn't提供代碼爲服務連接)。這個想法是,主要活動handels服務壽命!

據「停止」與用戶此代碼後的服務點擊我的應用程序的「關閉」按鈕:

if (_service != null) { 
    unbindService(_connection); 
} 
//Some cleanup here ... 
System.exit(0); 

我知道在這一點上,沒有任何其他活動綁定到服務事業的每一次活動從主要活動中調用,並從「onStop」的服務中解除綁定。

所以問題是我的服務不會在用戶關閉應用程序時調用「onDestroy」! 當我刪除「System.exit(0)」行時,它將正常關閉!

在這種情況下,如何確保服務正常關閉?

編輯:

好,我看這個討論:Is quitting an application frowned upon?

現在我重建我的活動。我有一個使用startService調用服務的活動,然後綁定服務。當活動被銷燬時,它調用unbindService。

服務本身在onStartCommand中返回START_STICKY,使其更難以殺死它。它在所有工作完成後都會打電話給stopSelf。

現在我有問題,如果綁定仍然存在,我得到ServiceConnectionLeaked消息!那是什麼?我怎麼能阻止呢?使用

+0

http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-upon – Raghunandan

回答

0

finish()代替System.exit(0)