您的位置:首页 > 移动开发

Activity管理工具类AppManager

2015-12-14 22:07 274 查看
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

[java] view
plaincopy





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<Activity> 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<Activity>();

}

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的android客户端开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。

如果我们在退出程序的时候,调用AppManager.AppExit(Context)就可以将栈中所有的Activity实例销毁。

如果我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用对应的方法,这样我们就不需要单独在某个Activity里面添加重复逻辑,精简代码,比如像下面这样

[java] view
plaincopy





/**

* 对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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: