亚洲伦理av人妻 一本道久久综合久久88 ,免费簧片,成·人免费午夜视频在线观看 ,欧美一级视频,2023语文高考作文,a人片高级黄774777在线观看

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

Android設計模式]Android退出應用程序終極方法

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

當前位置:首頁 > 動態(tài) > 技術分享

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

首先,我們將管理Activity的功能通過一個擴展的Application類來實現。

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) {

        }

    }

}

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

退出應用程序11.jpg

使用方法:

 

方法1: 之后我們在所有的activity的oncreate方法中通過getinstance得到一個MyApplication的實例,然后調用addActivity方法把當前的activity加入到stack中,如果要退出應用程序只需要調用AppExit方法即可。

 

方法2: 自定義一個繼承Activity類的BaseActivity:

退出應用程序22.jpg

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