免费一级特黄特色大片,久久精品二区,日日操日日舔,天天做天天爱天天爽综合网,久久久免费观成人影院,www免费视频,国产精品美女免费视频观看,成人a免费视频播放,成人午夜网址,看全色黄大色黄大片毛片,欧美一级全黄

服務(wù)熱線:0755-83100310(7X24h)

Android設(shè)計(jì)模式]Android退出應(yīng)用程序終極方法

發(fā)布者:admin    發(fā)布時(shí)間:2019-08-18    人氣:3145

當(dāng)前位置:首頁 > 動(dòng)態(tài) > 技術(shù)分享

如何干凈徹底地退出Android應(yīng)用程序,是很多開發(fā)者的心頭癢。如何干凈地關(guān)閉所有已打開的Activity? 如何關(guān)閉指定的Activity? 如何關(guān)閉一類Activity? 這里,我們提出一種通過實(shí)現(xiàn)對Application的擴(kuò)展,實(shí)現(xiàn)了一種高效管理Activity,實(shí)現(xiàn)Android干凈徹底地退出應(yīng)用程序。

首先,我們將管理Activity的功能通過一個(gè)擴(kuò)展的Application類來實(shí)現(xiàn)。

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 獲取當(dāng)前Activity(棧中最后一個(gè)壓入的)

     */

    public Activity currentActivity() {

        Activity activity = activityStack.lastElement();

        return activity;

    }

    /**

     * 結(jié)束當(dāng)前Activity(棧中最后一個(gè)壓入的)

     */

    public void finishActivity() {

        Activity activity = activityStack.lastElement();

        finishActivity(activity);

    }

 

    /**

     * 結(jié)束指定的Activity

     */

    public void finishActivity(Activity activity) {

        if (activity != null) {

            activityStack.remove(activity);

            activity.finish();

            activity = null;

        }

    }

 

    /**

     * 結(jié)束指定類名的Activity

     */

    public void finishActivity(Class<?> cls) {

        for (Activity activity : activityStack) {

            if (activity.getClass().equals(cls)) {

                finishActivity(activity);

            }

        }

    }

 

    /**

     * 結(jié)束所有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();

    }

 

    /**

     * 退出應(yīng)用程序

     */

    public void AppExit() {

        try {

            finishAllActivity();

        } catch (Exception e) {

        }

    }

}

注意,為了在我們自己的應(yīng)用程序中使用這個(gè)自定義的Application類,而不是默認(rèn)的Application類。需要在Manifest文件中修改一下<Application>的屬性。

退出應(yīng)用程序11.jpg

使用方法:

 

方法1: 之后我們在所有的activity的oncreate方法中通過getinstance得到一個(gè)MyApplication的實(shí)例,然后調(diào)用addActivity方法把當(dāng)前的activity加入到stack中,如果要退出應(yīng)用程序只需要調(diào)用AppExit方法即可。

 

方法2: 自定義一個(gè)繼承Activity類的BaseActivity:

退出應(yīng)用程序22.jpg

后續(xù)的Activity 都集成這個(gè)BaseActivity就可以了。