今天又碰到了這個問題。綜合以前的做法跟現在的情況,我找出一種相對比較好的做法。像網上到處說的sysytem.exit(), Android.os.Process.killProcess(android.os.Process.myPid()), ActivityManager類的restartPackage方法或者在Intent中直接加入標志Intent.FLAG_ACTIVITY_CLEAR_TOP等都存在這樣那樣的問題。我今天使用的是以下方法,在不破壞android管理Activity方式的前提下退出應用程序。
1. 如果你的程序只存在一個activity,那就很好辦,finish()即可。
2.如果你的程序存在多個activity,我們使用startActivityForResult()。假如A是你的主activity,B,D是2級activity,C,E是3級activity,那麼我們可以使用以下流程來結束:
我們重寫A的onActivityResult(),在該方法裡面判斷返回代碼是否是OK(OK代表退出應用程序),如果是我們就finish當前Activity。
我們重寫BD的onActivityResult(),在該方法裡面判斷返回代碼是否是OK,如果是我們就setResult(OK)然後finish當前Activity。
在CE裡面如果用戶確定退出,我們就只需要setResult(OK)然後finish當前Activity。
我們這種方法就是使用了逐層清理Activity的方法。
當然它存在很多問題:
1.如果Activity層級眾多的時候不適合使用。當然一般的應用程序最多有3級Activity。
歡迎提出問題探討。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11