以下内容整理自互联网,仅用于个人学习
1. 链表存储所有Activity
在Application中定义一个单例模式的Activity链表来管理所有Activity,退出时,逐个调用finish()。
2. ActivityManager
在AndroidManifest.xml添加权限
<uses permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" ></uses>
退出应用时,调用
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); //常规java标准退出法,返回值为0代表正常退出
4. Activity启动标记
Android的窗口类提供了历史栈,我们可以通过Stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标记Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口:
Intent intent = new Intent();
intent.setClass(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
startActivity(intent);
还可以通过递归退出的方式,在打开新的Activity时使用startActivityForResult()方法来启动,然后自己加标记,在退出时可以递归退出。
5. 广播机制
新建BaseActivity,所有Activity继承该Activity。在BaseActivity中注册广播接收器,在onReceive调用finish()。
6. 强制异常退出
抛出异常使程序Force Close。