Activity管理工具类AppManager
2015-12-13 00:01
239 查看
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992
这个类是从oschina的android客户端开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。
如果我们在退出程序的时候,调用AppManager.AppExit(Context)就可以将栈中所有的Activity实例销毁。
如果我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用对应的方法,这样我们就不需要单独在某个Activity里面添加重复逻辑,精简代码,比如像下面这样
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992
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里面添加重复逻辑,精简代码,比如像下面这样
/** * 对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); }
相关文章推荐
- Android 属性动画三剑客
- SpringMVC----RequestMapping映射请求
- Android SHA1与Package获取方式
- iOS传感器开发——加速度传感器,螺旋仪传感器,磁力传感器的应用
- 如何保证Android与服务器的DES加密保持一致
- iOS 中KVC、KVO、NSNotification、delegate 总结及区别
- Android Development Notes -1
- Android源码分析:HeaderViewListAdapter
- 2015-12-12 java hibernate 微信表情昵称保存
- WindowManager类使用详解——用户首次打开APP的使用教学蒙板效果实现
- 安卓学习笔记四
- 如何查看android-support-v4支持包中的源码
- Android编程规范V1.0
- 通过AndroidTestCase来进行android 单元测试
- android:windowSoftInputMode属性详解
- 使用Ant批量打包Android应用完全指南
- 来,咱们自己写一个Android的IOC框架!
- AppWidght全面学习之电量监控小部件的实现详解
- iOS开发56-Mac OS X下使用Jekyll搭建博客并托管到github
- android中的单位转换,dp,sp,px