正確退出activity 如何退出Activity

2021-10-16 18:02:55 字數 1498 閱讀 5561

當然,也可以用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...