2011-08-30 54 views
1

我嘗試使用finish()關閉應用程序,但finish()方法剛完成活動,應用程序不關閉。 現在我正在使用System.exit(0)來關閉應用程序,有時它可以正常工作,但有時會引發異常。我如何完全退出應用程序?如何在android中關閉/退出應用程序?

+3

Android的設計圍繞這樣一個想法:系統而不是用戶或開發人員決定何時處置應用程序的進程。真正有必要超越的情況雖然並非前所未有,但卻有點罕見。爲什麼你這樣做很重要? –

+0

你應該讓Android決定何時破壞你的應用。如果你看到「Android應用程序的生命週期」,你會明白,只有你必須做的完成你的應用程序是一個.finish();在你的主要活動中。 應用程序的管理完美無瑕。 – Aracem

+1

@克里斯 - 我認爲你太過分了。簡單的例子當應用程序肯定需要*關閉* - 它像密碼管理器 – barmaley

回答

3

好的,你可以做onething獲得你的應用程序的ProcessID,並在onDestroy()中殺死該進程。多數民衆贊成它

int pid=android.os.Process.myPid(); 
android.os.Process.killProcess(pid); 
+0

使用這種方法,是否有數據通過意圖傳遞數據一個活動? –

+0

謝謝!它工作正常 – Prachi

1

Android的內存模型有點奇怪 - 基本上,操作系統將決定當你想要實際退出。只要你的應用程序沒有使用帶寬或CPU時間過長(閱讀:用戶的金錢或CPU時間),Android系統的設計就是這樣,你應該讓它保持運行,當系統自動殺死應用程序時它需要資源。

您需要做的是停止使用(通過finish()或其他方式)帶寬或CPU時間等,重置您需要的任何狀態以提供您想要的用戶體驗,放棄任何喚醒鎖或類似雜項硬件修改,並結束任何服務確實不想繼續使用stopSelf()運行。

如果/當操作系統內存耗盡(這是唯一一次活動實際上已經過去或者只是暫時沒有做任何事情的時候),它會毫不客氣地強制終止活動或服務(不運行任何操作清理代碼或事件處理程序)基於一組相當複雜的優先級,基本歸結爲「不要拋出用戶正在使用/將會注意到的任何內容」。

相關問題