使用堆栈管理activity,第二次启动时进入程序黑屏?

HuaLikeDotNet 2011-01-19 10:51:28
程序有个完全退出的功能,据说使用堆栈管理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);
...全文
60 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
HuaLikeDotNet 2011-01-19
  • 打赏
  • 举报
回复
问题是。第二次启动程序时候就是黑屏了。请高手指教

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧