android程序安装后点击HOME键重启问题

来源:互联网 发布:谢道清 知乎 编辑:程序博客网 时间:2024/05/16 12:57

前段时间遇到一个的这个问题,在程序打包好以后,在手机上安装完成,这个时候不要点完成这个按钮,直接点击打开,进入到程序再按home键回到桌面,再找到程序进入,发现程序又开启了一个新的。这个问题困扰我好久,终于解决了,把代码贴出来做个笔记吧。

import java.util.Stack;import android.app.Activity;public class MyActivityManager {private static Stack<Activity> activityStack;/** 退出栈顶Activity */public void popActivity(Activity activity) {if (activity != null) {// 在从自定义集合中取出当前Activity时,也进行了Activity的关闭操作activity.finish();activityStack.remove(activity);activity = null;}}/** 获得当前栈顶Activity */public Activity currentActivity() {Activity activity = null;if (!activityStack.empty())activity = activityStack.lastElement();return activity;}/** 将当前Activity推入栈中 */public void pushActivity(Activity activity) {if (activityStack == null) {activityStack = new Stack<Activity>();}activityStack.add(activity);}/** 退出栈中所有Activity */public void popAllActivityExceptOne(Class cls) {while (true) {Activity activity = currentActivity();if (activity == null) {break;}if (activity.getClass().equals(cls)) {break;}popActivity(activity);}}/** 移除指定的activity */public void removeActivity(Activity removeactivity) {if (activityStack != null) {for (int i = 0; i < activityStack.size(); i++) {Activity activity = activityStack.get(i);if (activity == null) {break;}if (activity.getClass().equals(removeactivity)) {activityStack.remove(i);break;}}}}/** 判断传入的activity是否已存在 */public boolean myequals(Class a) {if (activityStack != null) {for (int i = 0; i < activityStack.size(); i++) {Activity activity = activityStack.get(i);if (activity.getClass().equals(a)) {return true;}}}return false;}public int getSize() {if (activityStack != null)return activityStack.size();return 0;}}
在程序的第一个activity中就创建该对象并且把当前的activity加入堆栈中,并且判断大小及是否添加过,如果添加过就移除该activity即可

0 0
原创粉丝点击