Activity退出的幾種方式
阿新 • • 發佈:2018-12-23
在android中使用:[activityname].this.finish(); 只是退出了activity的堆疊中,要真正的退出程式在手機cpu中的執行,當應用不再使用時,通常需要關閉應用,可以使用以下三種方法關閉android應用:
一 使用killProcess()函式,首先獲取當前程序的id,然後殺死該程序:
android.os.Process.killProcess(android.os.Process.myPid());
通過這種方式不能將應用程式完全殺死,並且他不會把當前應用應用的Activity的task任務棧清空
二 在activity的生命週期函式中新增如下的函式,強制關閉與該包有關聯的一切執行:
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage("packagename");
還需要在AndroidManifest.xml檔案中加入如下的許可權:
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
此做法:只能殺死別人,不能殺死自己
三、 終止當前正在執行的Java虛擬機器,導致程式終止
System.exit(0);
不會把自己的應用程式殺死
企業中做法:
建立類app 繼承Application
AndroidMainfest –>name –>app //宣告該類為整個應用程式全域性的例項
建立整個應用程式全域性的例項\
App.class:
ArrayList<Activity> activities;
其他的Activity中:
public void onCreate(Bundle savedInstanceState) { App app = (App) getApplication();//獲取應用程式全域性的例項引用 app.activities.add(this); //把當前Activity放入集合中 } public void onDestory(){ App app = (App) getApplication();//獲取應用程式全域性的例項引用 app.activities.remove(this); //把當前Activity從集合中移除 }
安全退出:
在選單退出按鈕的事件中定義如下程式碼:
App app = (App) getApplication();
List<Activity> activities = app.activities;
for(Activity act:activities){
act.finish();//顯式結束
}