Android完全退出程序
来源:互联网 发布:阜宁县网络发言人平台 编辑:程序博客网 时间:2024/06/06 02:59
有过Android开发经验的人都知道,应用程序点击返回键或者代码显示调用了Activity.finish()方法都无法完全退出,他们还在进程中。下面分享下Android客户端完全退出程序的方法:
1.添加权限 <uses-permission android:name=”android.permission.RESTART_PACKAGES” />
2.AppManager工具类
AppManager工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager代码:
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();
if (activity != null) {
activity.finish();
activity = null;
}
}
/**
* 结束指定的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) {
}
}
}
3.使用AppManager工具类
Activity启动时,在的onCreate方法里面,将该Activity实例添加到AppManager的堆栈
AppManager.getAppManager().addActivity(this);
需要退出程序时,调用:
AppManager.getAppManager().AppExit(this);
0 0
- android 完全退出程序
- android 完全退出程序
- android完全退出程序
- android完全退出程序
- android完全退出程序
- android程序完全退出
- Android程序完全退出
- android 完全退出程序
- Android完全退出程序
- Android完全退出程序
- android 完全退出程序
- android 完全退出程序
- Android 程序完全退出
- android完全退出程序
- android完全退出程序
- Android完全退出程序
- Android程序完全退出
- Android完全退出程序
- 效率极低人群之七大习惯------写得很透彻
- 关于iOS push一些问题的理解
- HDU 1232 畅通工程
- 测试人员如何减少产品的遗留bug
- Spark Streaming 流计算优化记录(3)-控制流量与join的地点
- Android完全退出程序
- POJ - 2115 - C Looooops (扩展欧几里得)
- 暑假习题 五
- 图像分割(大律法 OSTU法)
- 新特性
- 挂载ubifs文件系统分区
- 2015年 苹果开发者/邓氏编码 账户申请
- STM32F4——GPIO基本应用及复用
- Lua笔记2-开始