當然,也可以用killprocess()和system.exit()這樣的方法。
但是,對於多activity的應用來說,在開啟多個activity後,如果想在最後開啟的activity直接退出,上邊的方法都是沒有用的,因為上邊的方法都是結束乙個activity而已。
當然,網上也有人說可以。
就好像有人問,在應用裡如何捕獲home鍵,有人就會說用keycode比較keycode_home即可,而事實上如果不修改framework,根本不可能做到這一點一樣。
所以,最好還是自己親自試一下。
那麼,有沒有辦法直接退出整個應用呢?
在2.1之前,可以使用activitymanager的restartpackage方法。
它可以直接結束整個應用。在使用時需要許可權android.permission.restart_packages。
注意不要被它的名字迷惑。
可是,在2.2,這個方法失效了。
在2.2新增了乙個新的方法,killbackgroundprocesses(),需要許可權android.permission.kill_background_processes。
可惜的是,它和2.2的restartpackage一樣,根本起不到應有的效果。
另外還有乙個方法,就是系統自帶的應用程式管理裡,強制結束程式的方法,forcestoppackage()。
它需要許可權android.permission.force_stop_packages。
並且需要新增android:shareduserid="android.uid.system"屬性
同樣可惜的是,該方法是非公開的,他只能執行在系統程序,第三方程式無法呼叫。
因為需要在android.mk中新增local_certificate := platform。
而android.mk是用於在android原始碼下編譯程式用的。
從以上可以看出,在2.2,沒有辦法直接結束乙個應用,而只能用自己的辦法間接辦到。
現提供幾個方法,供參考:
1、拋異常強制退出:
該方法通過拋異常,使程式forceclose。
驗證可以,但是,需要解決的問題是,如何使程式結束掉,而不彈出force close的視窗。
2、記錄開啟的activity:
每開啟乙個activity,就記錄下來。在需要退出時,關閉每乙個activity即可。
3、傳送特定廣播:
在需要結束應用時,傳送乙個特定的廣播,每個activity收到廣播後,關閉即可。
4、遞迴退出
在開啟新的activity時使用startactivityforresult,然後自己加標誌,在onactivityresult中處理,遞迴關閉。
除了第乙個,都是想辦法把每乙個activity都結束掉,間接達到目的。
但是這樣做同樣不完美。
你會發現,如果自己的應用程式對每乙個activity都設定了nosensor,在兩個activity結束的間隙,sensor可能有效了。
但至少,我們的目的達到了,而且沒有影響使用者使用。
如何退出多個Activity
對於單一activity的應用來說,退出很簡單,直接finish 即可。當然,也可以用killprocess 和system.exit 這樣的方法。對於多個activity,1 記錄開啟的activity 每開啟乙個activity,就記錄下來。在需要退出時,關閉每乙個activity即可。2 傳送...
如何退出多個Activity
對於單一activity的應用來說,退出很簡單,直接finish 即可。當然,也可以用killprocess 和system.exit 這樣的方法。對於多個activity,1 記錄開啟的activity 每開啟乙個activity,就記錄下來。在需要退出時,關閉每乙個activity即可。2 傳送...
Activity完全退出
intent intent new intent intent.putextra exit exit 新增引數,這是退出的依據 intent.setclass menuactivity.this,loginactivity.class 跳轉到login介面,根據引數退出 intent.setflag...