程序有个完全退出的功能,据说使用堆栈管理activity,在退出时候能完全的退出。
这个是activity管理类/**
* 使用单例模式 将activit存放到堆栈里进行管理
*/
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){}
public static ScreenManager getScreenManager(){
if(instance==null){
instance=new ScreenManager();
}
return instance;
}
/**
* 存放activity到堆中
* @param activity
*/
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 从堆栈中取activity 并关闭
*/
public void popActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
/**
* 从堆栈中取最后一个activity
* @return
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 移除全部并且关闭activity
*/
public void popAllActivit(){
while(true){
if(!activityStack.empty())
{
//Activity activity = activityStack.pop();
Activity activity=currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}} 在activity跳转时候进行压入堆栈//添加到堆栈
ScreenManager screenManger=ScreenManager.getScreenManager();
screenManger.pushActivity(TestExitB.this);
Intent intent = new Intent();
intent.setClass(TestExitB.this,TestExitC.class);
startActivity(intent);
这个是activity管理类/**
* 使用单例模式 将activit存放到堆栈里进行管理
*/
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){}
public static ScreenManager getScreenManager(){
if(instance==null){
instance=new ScreenManager();
}
return instance;
}
/**
* 存放activity到堆中
* @param activity
*/
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 从堆栈中取activity 并关闭
*/
public void popActivity(){
Activity activity=activityStack.lastElement();
if(activity!=null){
activity.finish();
activity=null;
}
}
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
/**
* 从堆栈中取最后一个activity
* @return
*/
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
/**
* 移除全部并且关闭activity
*/
public void popAllActivit(){
while(true){
if(!activityStack.empty())
{
//Activity activity = activityStack.pop();
Activity activity=currentActivity();
if(activity==null){
break;
}
popActivity(activity);
}
}
}
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}} 在activity跳转时候进行压入堆栈//添加到堆栈
ScreenManager screenManger=ScreenManager.getScreenManager();
screenManger.pushActivity(TestExitB.this);
Intent intent = new Intent();
intent.setClass(TestExitB.this,TestExitC.class);
startActivity(intent);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货