以下內(nèi)容整理自互聯(lián)網(wǎng),僅用于個(gè)人學(xué)習(xí)
1. 鏈表存儲(chǔ)所有Activity
在Application中定義一個(gè)單例模式的Activity鏈表來(lái)管理所有Activity,退出時(shí),逐個(gè)調(diào)用finish()。
2. ActivityManager
在AndroidManifest.xml添加權(quán)限
<uses permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" ></uses>
退出應(yīng)用時(shí),調(diào)用
ActivityManager am= (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
am.killBackgroundProcesses(this.getPackageName());
3. Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //獲取PID
System.exit(0); //常規(guī)java標(biāo)準(zhǔn)退出法,返回值為0代表正常退出
4. Activity啟動(dòng)標(biāo)記
Android的窗口類(lèi)提供了歷史棧,我們可以通過(guò)Stack的原理來(lái)巧妙的實(shí)現(xiàn),這里我們?cè)贏窗口打開(kāi)B窗口時(shí)在Intent中直接加入標(biāo)記Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開(kāi)啟B時(shí)將會(huì)清除該進(jìn)程空間的所有Activity。
在A窗口中使用下面的代碼調(diào)用B窗口:
Intent intent = new Intent();
intent.setClass(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設(shè)置
startActivity(intent);
還可以通過(guò)遞歸退出的方式,在打開(kāi)新的Activity時(shí)使用startActivityForResult()方法來(lái)啟動(dòng),然后自己加標(biāo)記,在退出時(shí)可以遞歸退出。
5. 廣播機(jī)制
新建BaseActivity,所有Activity繼承該Activity。在BaseActivity中注冊(cè)廣播接收器,在onReceive調(diào)用finish()。
6. 強(qiáng)制異常退出
拋出異常使程序Force Close。