清空Activity Task栈
来源:互联网 发布:怎么选帽子 知乎 编辑:程序博客网 时间:2024/06/06 07:16
最近在做Launcher与业务模块之间的跳转,为了保证模块跳转以及返回正常,点击Home键后需要清空业务模块的Activity Task栈。
实现方式:
自定义一个ActivityManager管理类,用于管理栈中的Activity,这个需要跳转的过程中配合Flag使用,可以参考http://www.cnblogs.com/zl1991/p/6307580.html实现。
单纯通过跳转的Flag去控制清空栈:
Intent intent = newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.setClass(MainActivity.this,Activity.class);
startActivity(intent);实测效果不好,难道是姿势不对?
最终我是通过将打开的activity记录下来,在合适的时机将其从栈内移除。
(1)在Application初始化存储所有打开activity的集合。
public class App extends Application { public static App app; /** * 用于存储所有打开activity的集合 */ private final LinkedList<Activity> mActivitys = new LinkedList<>(); @Override public void onCreate() { super.onCreate(); app = this; } /** * Activity开启时添加Activity到集合 * * @param activity */ public void addActivity(Activity activity) { mActivitys.addFirst(activity); } /** * Activity退出时清除集合中的Activity. * * @param activity 被移除的activity */ public void removeActivity(Activity activity) { mActivitys.remove(activity); } /** * 清除 除了自己外其他activity * @param oneself 不被移除的activity */ public void removeOtherActivity(Activity oneself) { try { for (Activity activity : mActivitys) { if (activity!=null && !activity.getLocalClassName().equals(oneself.getLocalClassName())){ activity.finish(); } } }catch (Exception e){ e.printStackTrace(); } } /** * 退出应用时调用 */ public void exit() { for (Activity activity : mActivitys) { if (activity!=null){ activity.finish(); } } }}
(2)在BaseActivity中调用,如果没有BaseActivity那么只能在每个activity中添加了:
public class BaseActivity extends AppCompatActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { App.app.addActivity(this); super.onCreate(savedInstanceState); } @Override protected void onDestroy() { App.app.removeActivity(this); super.onDestroy(); }}
(3)在合适的时机调用
App.app.removeOtherActivity(this);//从桌面进入,移除栈内除了自己之外所有的activity
或者调用
App.app.exit();//清空所有Activity
阅读全文
0 0
- 清空Activity Task栈
- 处理home按键清空Activity所在的Task堆栈
- Android 清空activity栈的方法
- 清空Activity缓存
- android 跳转activity,清空之前activity栈
- android 跳转activity,清空之前activity栈
- android Activity 清空焦点
- 清空Task的Back Stack
- Activity,Task和task栈
- 【android】App退出清空Activity。
- 清空任务栈
- 启动一个Activity,清空之前所有的Activity
- Activity退出程序时候,怎样清空Activity
- Activity和Task(栈)
- Task(Activity栈) 详解
- Task(Activity栈) 详解
- 清空任务栈问题
- android activity的变量是什么时候清空的呢?
- angular服务延迟发送消息延迟加载(Lazy-Loading),$timeout服务
- 1024,你懂的
- 照相机和图库的调用
- 我看当代世界的三大政治思潮
- 【Link】ld: unknown option: -soname” on MacOS X
- 清空Activity Task栈
- 九九乘法表
- HDU 5952 Counting Cliques 暴力搜索+巧妙建边
- 《Machine Learning》第七讲 Precision and Recall
- recycleView 多条目加载 + 下拉刷新 +GridView 与 ListView 切换
- 购物车里的二级联动的复选框全选和总计
- windows定时关机bat脚本
- Http 网络连接
- Mybatis学习(13)-MyBatis和Spring整合