5分鐘打造Android一鍵退出功能

5分鐘打造Android一鍵退出功能

本文原創,轉載請經過本人准許。

寫在前面:

當我們的App打開很多Activity的時候,用戶挨個返回退出顯然用戶體驗是非常不好的,所以我們有時需要提供一個一鍵退出功能。一鍵退出功能有很多種實現方法,本文我們選擇比較常規的手段,用一個BaseActivity管理所有啓動的Activity

下面給出完整的BaseActivity代碼

import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;

public abstract class BaseActivity extends Activity {
    // 管理運行的所有的activity
    public final static List<BaseActivity> mActivities = new LinkedList<BaseActivity>();
    public static BaseActivity activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        synchronized (mActivities) {
            mActivities.add(this);
        }
        init();
    }

    private void init() {
        initViews();
        initData();
    }

    /**
     * 初始化Views
     */
    public abstract void initViews();

    /**
     * 初始化數據
     */
    public void initData() {

    }

    @Override
    protected void onResume() {
        super.onResume();
        activity = this;
    }

    @Override
    protected void onPause() {
        super.onPause();
        activity = null;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        synchronized (mActivities) {
            mActivities.remove(this);
        }
    }

    /**
     * 一鍵退出的方法
     */
    public void killAll() {
        // 複製了一份mActivities 集合
        List<BaseActivity> copy;
        synchronized (mActivities) {
            copy = new LinkedList<BaseActivity>(mActivities);
        }
        for (BaseActivity activity : copy) {
            activity.finish();
        }
        // 殺死當前的進程
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

代碼分析:
在項目中的所有的Activity,都繼承於BaseActivity,在onCreate方法中,將這個Activity addLinkedList中(這裏選擇用LinkedList是因爲它增刪快,適合於這個場景中),在onDestory方法中將這個Activity remove掉,這樣就保證每一個啓動了的Activity都存於集合LinkedList中。

然後我們寫一個killAll方法,複製這個集合並且遍歷退出,這樣我們的一鍵退出功能就完美實現了~!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章