Android完整退出应用程序完美解决方法

来源:互联网 发布:淘宝售假申诉流程 编辑:程序博客网 时间:2024/05/18 02:50

在开发中,一个应用如何干净彻底地退出Android应用程序,方法有非常多。如何干净地关闭所有已打开的Activity? 如何关闭指定的Activity? 如何关闭一类Activity? 这里,我们提出一种通过实现对Application的扩展,实现了一种高效管理Activity,实现Android干净彻底地退出应用程序。

public class MyApplication extends Application {        private static Stack<Activity> activityStack;    private static MyApplication singleton;    @Override    public void onCreate()    {        super.onCreate();        singleton=this;    }    // Returns the application instance    public static MyApplication getInstance() {        return singleton;    }    /**     * add Activity 添加Activity到栈     */    public void addActivity(Activity activity){        if(activityStack ==null){            activityStack =new Stack<Activity>();        }        activityStack.add(activity);    }    /**     * get current Activity 获取当前Activity(栈中最后一个压入的)     */    public Activity currentActivity() {        Activity activity = activityStack.lastElement();        return activity;    }    /**     * 结束当前Activity(栈中最后一个压入的)     */    public void finishActivity() {        Activity activity = activityStack.lastElement();        finishActivity(activity);    }    /**     * 结束指定的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() {        try {            finishAllActivity();        } catch (Exception e) {        }    }}

注意要在Manifest文件中修改一下Application中name的属性

使用方法推荐:
public class BaseActivity extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        //添加Activity到堆栈        MyApplication.getInstance().addActivity(this);    }     @Override    protected void onDestroy(){        super.onDestroy();        //结束Activity&从栈中移除该Activity        MyApplication.getInstance().finishActivity(this);    } }

Android学习交流①群 152643026



0 0
原创粉丝点击