封装Activity的堆栈管理类。
来源:互联网 发布:牛耳软件学院图片 编辑:程序博客网 时间:2024/05/21 15:17
前言
提供一个工具类,应用场景: A、B、C 为三个不同的 activity
当我们从 A 跳转到 B, 再从 B跳转到 C ,此时,我们有这样一个需求,就是如何从 C 跳转到 A ,难道我们还要 new 一个 intent 吗,不,我们只需要移除 B 这个堆栈 直接把 C finish()就行了。
这个工具类可以应用到项目中,在BaseActivity onCreate()方法中,调用 AppMannager.getInstance().addActivity(Activity activity);在onDestroy()方法中调用AppMannager.getInstance().deleteActivity(Activity activity);
这样我们就可以清楚的知道堆栈中的情况了。
代码
import android.app.Activity;import java.util.Stack;public class AppMannager { private static AppMannager appManager ; private Stack<Activity> listActivitys = new Stack<>(); /* * 得到实例 * */ public static AppMannager getInstance(){ if(appManager == null) { appManager = new AppMannager(); } return appManager ; } /* * 添加actviity * */ public void addActivity(Activity activity){ listActivitys.add(activity) ; } /* * 移除activity * */ public void removeActivity(Activity activity){ for(int i = 0 ; i < listActivitys.size() - 1; i ++) { if(listActivitys.get(i).getClass().equals(activity.getClass())) { activity.finish(); listActivitys.remove(activity); } } } /* * 移除当前的activity 的栈 * */ public void removeCurrent( ){ Activity activity = listActivitys.lastElement(); //最上面的 也就是第一个栈 activity.finish(); listActivitys.remove(activity); } /* * 移除所有的栈 * */ public void removeAll(){ for(int i = listActivitys.size() - 1 ; i >= 0 ; i -- ) { listActivitys.get(i).finish(); listActivitys.remove(i); } } /* * 得到当前的栈 * */ public int getStackSize(){ return listActivitys.size() ; }}
阅读全文
1 0
- 封装Activity的堆栈管理类。
- 自定义Activity堆栈管理类
- activity堆栈管理
- Activity堆栈管理详解
- Activity堆栈管理
- activity 堆栈管理
- Activity堆栈管理
- activity堆栈式管理
- Activity堆栈管理
- Activity堆栈式管理
- Activity堆栈管理
- activity堆栈式管理
- activity堆栈式管理
- Activity堆栈管理
- Activity生命周期和堆栈管理
- Android-activity堆栈及管理
- Android 堆栈式管理Activity
- Activity堆栈管理及其使用
- html5浏览器缓存 localStorage 之LsyStorage.js插件的使用
- C++字符串处理 kevin_xcw
- 计蒜客 字符串条件
- 新数仓系列:Hbase国内开发者生存现状(2)
- unity在android显示界面(UnityPlayerActivity)不重复加载且app退出杀掉所有界面
- 封装Activity的堆栈管理类。
- 过滤器Filter
- 图像特征描述子之ORB
- 创建一个简单tcp操作
- 蒻狗的补题
- ImageView宽固定,高适应
- C++如何调用R
- 设计模式(一)创建模式(工厂模式、建造模式、单例模式)
- 了解antd提供的构建方式,以下将使用最基础的webpack方式进行打包。