退出登录ActivityManager
2016-03-23 16:25
169 查看
1. 添加权限
<uses-permission android:name=”android.permission.RESTART_PACKAGES” />
2. 导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
/**
* 应用程序Activity管理类
* author 谭东
*/
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);
<uses-permission android:name=”android.permission.RESTART_PACKAGES” />
2. 导入AppManager工具类
AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity。
完整的AppManager类代码:
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
/**
* 应用程序Activity管理类
* author 谭东
*/
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);
相关文章推荐
- http网络请求
- 学习Discuz! X3.2记录:快速回复插件制作过程,涉及记录hookid(好麻烦,先在hookid位置输出aaabbb)
- IBM openblockchain学习(二)--chaincode源码分析
- git pull rebase笔记
- Nginx源码分析(1)之——共享内存的配置、分配及初始化
- Cg入门14:Vertex Shader - 几何变换 —顶点扭曲
- Xcode的版本问题
- Event&Condition pyton
- IOS开发之——keychain使用介绍
- Java四种线程池的使用
- mybatis 一二事(3) - 多表关联查询
- OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
- Problem B: 小数计算——结构体
- [PHP实例] PHP 强制文件下载
- 文字
- 深入理解jvm装载约束
- php 获取客户端IP
- centos6.7rsync端与window2012服务器实时文件同步
- 如何做cramfs只读文件系统的在线更新
- Sublime Text 3 菜单栏及便捷操作