最近做项目遇到一个问题,activity栈管理
想要在某个activity直接退出应用有两种方法
1.拿一个linkedlist来管理activity的实例,再退出的时候循环list来finish掉所有的activity;但是这样写会有一个缺陷,就是list会强引用activity的实例,造成内存泄漏。
2.在baseactivity里注册一个广播,然后在退出的时候发送一个广播,在base中接受到回调后finish掉接收到广播的activity。
private BroadcastReceiver exitAppReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { unregisterReceiver(this); ((Activity) context).finish(); } };
public void exitApp() { Intent intent = new Intent(); intent.setAction(Constant.EXIT_APP); sendBroadcast(intent); finish(); }
在onresume中动态注册此广播
//注册 IntentFilter filter = new IntentFilter(); filter.addAction(Constant.EXIT_APP); registerReceiver(this.exitAppReceiver, filter);