应用程序Activity管理类:用于Activity管理和应用程序退出
2017-03-20 18:13
423 查看
工具类
package org.lmw.tools.kd.tools; import java.util.List; import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.ResolveInfo; import android.content.pm.PackageManager.NameNotFoundException; /** * 应用程序Activity管理类:用于Activity管理和应用程序退出 * */ public class AppManager { 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, size = activityStack.size(); i < 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.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { } } /** * 检测安装 */ public static boolean checkApp(Context c, String packageName,int versionCode) { // 检测当前包名的应用是否安装,检测当前包名的当前版本的应用是否安装 PackageInfo packageInfo = null; try { packageInfo = c.getPackageManager().getPackageInfo(packageName, 0); if (packageInfo.versionCode == versionCode) { return true; } } catch (NameNotFoundException e) { return false; } return false; } /** * 解析包名下的MainActivity启动路径 */ public static String getMainClass(Context c,String packageName){ if(!packageName.equals("")){ String mainClassName=""; Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageName); List<ResolveInfo> activitys = c.getPackageManager().queryIntentActivities(resolveIntent, 0); ResolveInfo ri = activitys.iterator().next(); if (ri != null) { mainClassName = ri.activityInfo.name; } return mainClassName; } return ""; } }
相关文章推荐
- Android 应用程序Activity管理类:用于Activity管理和应用程序退出
- Activity管理类,用于Activity管理和应用程序退出
- 通用于Activity管理和应用程序退出
- 用于Activity管理和应用程序退出
- Activity管理类:用于管理Activity和退出程序
- 用于Activity管理和应用程序退出
- 管理activity 完全退出应用程序
- Android 应用程序退出和Activity的管理
- Activity管理类,随时随地退出应用程序
- Activity管理和应用程序的退出(推荐使用stack)
- Activity管理和应用程序的退出(推荐使用stack)
- AppManager 用于管理activity和退出机制
- Android Activity管理类,管理Activity和退出应用
- android中Activity的管理及程序的退出
- android Activity管理类之退出程序
- 网络电台研究(2)自定义Application、BaseActivity管理统计数据、程序状态、应用程序完全退出
- 统一管理Activity,响应app退出
- [Activity生命周期] Android 完美退出应用程序
- 笔记:安卓完全退出应用程序出现闪退、返回上一个activity的问题
- android 完美退出APP的实例代码(管理activity)