博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android工具类】Activity管理工具类AppManager
阅读量:5066 次
发布时间:2019-06-12

本文共 2582 字,大约阅读时间需要 8 分钟。

    转载请注明出处:

    

import java.util.Stack;import android.app.Activity;import android.app.ActivityManager;import android.content.Context;/** *  * @ClassName: com.qust.myutils.AppManager * @Description: Activity管理类:用于管理Activity和退出程序 * @author zhaokaiqiang * @date 2014-11-20 下午4:53:33 *  */public class AppManager {	// Activity栈	private static Stack
activityStack; // 单例模式 private static AppManager instance; private AppManager() { } /** * 单一实例 */ public static AppManager getAppManager() { if (instance == null) { instance = new AppManager(); } return instance; } /** * 加入Activity到堆栈 */ public void addActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack
(); } activityStack.add(activity); } /** * 获取当前Activity(堆栈中最后一个压入的) */ public Activity currentActivity() { Activity activity = activityStack.lastElement(); return activity; } /** * 结束当前Activity(堆栈中最后一个压入的) */ public void finishActivity() { Activity activity = activityStack.lastElement(); finishActivity(activity); } /** * 结束指定的Activity */ public void finishActivity(Activity activity) { if (activity != null) { activityStack.remove(activity); activity.finish(); activity = null; } } /** * 结束指定类名的Activity */ public void finishActivity(Class
cls) { for (Activity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * 结束全部Activity */ public void finishAllActivity() { for (int i = 0; i < activityStack.size(); i++) { if (null != activityStack.get(i)) { activityStack.get(i).finish(); } } activityStack.clear(); } /** * 退出应用程序 */ public void AppExit(Context context) { try { finishAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception e) { } }}

    这个类是从oschina的androidclient开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。

    假设我们在退出程序的时候,调用AppManager.AppExit(Context)就能够将栈中全部的Activity实例销毁。

    假设我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用相应的方法,这样我们就不须要单独在某个Activity里面加入反复逻辑。精简代码。比方像以下这样

/**	 * 对context进行初始化,并将当前的Activity加入到堆栈中,便于管理	 */	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		// 加入Activity到堆栈		AppManager.getAppManager().addActivity(this);	}	@Override	protected void onDestroy() {		super.onDestroy();		// 结束Activity&从堆栈中移除		AppManager.getAppManager().finishActivity(this);	}

转载于:https://www.cnblogs.com/yxwkf/p/5069743.html

你可能感兴趣的文章
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
更改git仓库地址
查看>>
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>