这段时间跟几个朋友讨论了一下应用退出的逻辑,
1、有人会编写一个工具类(或者直接写在Application)将所有的activity都放在里面 当用户将程序退出的时候通过循环清除所有的activity保证所有的activity都关闭了
首先创建List<Activity> list=new ArrayList<Activity>();
写一个添加activity的方法,判断集合里面没有这个activity就添加
public void addActivity_(Activity activity) {
if (!oList.contains(activity)) {
oList.add(activity);
}
}
删除其中一个activity 判断集合里面有这个activity
if (oList.contains(activity)) {
oList.remove(activity);
activity.finish();
}
}
删除所有的activity 循环所有
for (Activity activity : oList) {
activity.finish();
}
2、有人说在BaseActivity的onCreate里面注册一个动态广播,在销毁的方法里面注销广播,通过广播关闭BaseActivity类
定义一个类继承BroadcastReceiver 一半都会写在BaseActivity里面
public class MyBroadcast_Broad extends BroadcastReceiver {
接收发过来的广播内容
public void onReceive(Context arg0, Intent intent) {
int closeMy= intent.getIntExtra("closeMy", 0);
if (closeMy== 1) {
关闭当前activity
finish()
}
}
动态注册广播
MyBroadcast_Broad mybroad= new MyBroadcast_Broad ();
IntentFilter intentFilter = new IntentFilter("xxx.xxx.xxxActivity");
registerReceiver(mybroad, intentFilter);
页面销毁的时候注销广播
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mybroad);
}
重写onKeyDown()方法 发送广播
Intent in = new Intent(xxx.xxx.xxxActivity);
in.putExtra("closeMy“,1);
sendBrodcast(in);发送广播
3、有人说当有不需要的活动及时finish()掉 当要退出的时候栈里面除了当前的activity就没有activity了 所以直接finish()就好;
4、有人说通过杀死自己的进程关闭程序Process.killProcess(Process.myPid());
个人觉得当确定栈里面没有activity后再杀死自己的进程,这样就保证程序完全退出了
重写 onKeyDown()
2秒钟点击两次 执行
finish();
Process.killProcess(Process.myPid());
写完了 ,下班了先,有路过的朋友在给补充吧。。。呲牙、、呲牙、、