如何 在多层acitivity中实现跳转并finish()之前所有的Activity
来源:互联网 发布:python 打印对象 编辑:程序博客网 时间:2024/05/20 18:00
核心代码:
实现代码:自己写一个ActivitManager
public class ActivityManager { private ArrayList<Activity> mActivityArray = new ArrayList<Activity>(); private Map<String, Integer> mActivityMap = new Hashtable<String, Integer>(); public static void addActivity(ActivityManager actManager,String name, Activity act) { actManager.addActivity(name, act); } public void addActivity(String name, Activity act) { int nCount = mActivityArray.size(); mActivityArray.add(act); mActivityMap.put(name, nCount); } public static void removeActivity(ActivityManager actManager,String name, Activity act) { actManager.removeActivity(name, act); } public void removeActivity(String name, Activity act) { Integer nIndex = mActivityMap.get(name); if (null == nIndex) return; int nCount = mActivityArray.size(); if (nIndex >= nCount) { for (int i = nCount - 1; i >= 0; i--) { Activity activity = mActivityArray.get(i); if (activity == act) { mActivityMap.remove(name); mActivityArray.remove(act); break; } } } else { if (nIndex < nCount) { if (act == mActivityArray.get(nIndex)) { mActivityArray.remove(nIndex); mActivityMap.remove(name); } else { mActivityArray.remove(act); } } else { mActivityArray.remove(act); } } } public static void killMyProcess(ActivityManager actManager) { actManager.killMyProcess(); } public void killMyProcess() { int nCount = mActivityArray.size(); for (int i = nCount - 1; i >= 0; i--) { Activity activity = mActivityArray.get(i); activity.finish(); } mActivityArray.clear(); mActivityMap.clear(); android.os.Process.killProcess(android.os.Process.myPid()); } public void gotoHome1InquireActivity() { int nCount = mActivityArray.size(); for (int i = nCount - 1; i >= 0; i--) { Activity activity = mActivityArray.get(i); if(! ( activity instanceof Home1InquireActivity ) ){ activity.finish(); mActivityArray.remove(i); if(mActivityMap.containsValue(i)){ for (Map.Entry<String, Integer> entry : mActivityMap.entrySet()) { if(entry.getValue() == i){ mActivityMap.remove(entry.getKey()); break; } } } }else{ break; } } } public void gotoHome2InquireActivity() { int nCount = mActivityArray.size(); for (int i = nCount - 1; i >= 0; i--) { Activity activity = mActivityArray.get(i); if(! ( activity instanceof Home2InquireActivity ) ){ activity.finish(); mActivityArray.remove(i); if(mActivityMap.containsValue(i)){ for (Map.Entry<String, Integer> entry : mActivityMap.entrySet()) { if(entry.getValue() == i){ mActivityMap.remove(entry.getKey()); break; } } } }else{ break; } } }}
如果进入一个Activity 就finish()上一个Activity,只要home那一页向新的Activity调转时,不要finish()homeActivity,android栈就会保存着那个home Activity, 所以在后面任意一个activity 不要startActivity(),直接finish(),就可以直接回到homeActivity.
另外一种高级点的方法就是上面讲的,相当于维护一个队列,拿着所有Activity的指引,删除所有的。。。
- 如何 在多层acitivity中实现跳转并finish()之前所有的Activity
- 退出登录并finish所有的activity
- 在activity中调用finish后并不是立马跳转
- Android中如何一次性finish掉以前打开的所有的activity
- Android中如何一次性finish掉以前打开的所有的activity
- Android中如何一次性finish掉以前打开的所有的activity
- 实现一键finish所有打开的Activity
- android 应用如何实现多个Activity在栈中finish掉
- 如何随时随地退出Activity,在退出Activity的时候关闭之前的Activity,如何退出程序所有Activity
- 在当前Activity中finish掉其它Activity的方法
- Activity之间的跳转及传值,并证明finish不是彻底销毁Activity(AndroidStudio)
- activity的跳转--finish() onDestory() system.exit()
- Android中实现activity的页面跳转并传值
- 将所有的Activity全部finish掉
- Android 关于Activity的跳转和finish时切换页面动画实现
- 如何实现项目1的Acitivity跳转到项目2的Acitivity(窗口化)。项目1的界面上显示窗口化的项目2界面
- Android开发中Activity跳转动画以及finish动画
- Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动并跳转的效果(二)
- Linux入门:定制“资源管理器”样式
- mysql的表级锁
- 应聘时最漂亮的回答
- 解析oracle的rownum
- 判断两个数组中是否存在相同的数字
- 如何 在多层acitivity中实现跳转并finish()之前所有的Activity
- WCF初接触实作——服务的发布和使用(三)
- Spring源代码的组织结构
- Android中Notification的framework层讲解
- android intent action 介绍大全
- android TabHost小结
- linux 内核netfilter实现
- 六字诀养生防病法
- poj 3468 A Simple Problem with Integers