有時你會發現當前想退出程序是非常不方便 的,需要連按很多次 Back鍵纔行。而按 Home鍵只是把程序掛起,並沒有退出程序。那麼我們的程序需要一個註銷或者退出的功能該怎麼辦呢?
必須 要有一個隨時隨地都能退出程序的方案纔行。
其實解決思路也很簡單,只需要用一個專門的集合類對所有的活動進行管理就可以了, 下面我們就來實現一下。
新建一個 ActivityCollector類作爲活動管理器,代碼如下所示:
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
在活動管理器中,我們通過一個 List來暫存活動,然後提供了一個 addActivity()方法用 於向 List中添加一個活動,
提供了一個 removeActivity()方法用於從 List中移除活動,
最後 提供了一個 finishAll()方法用於將 List中存儲的活動全部都銷燬掉。
接下來修改 BaseActivity中的代碼,如下所示:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
在 BaseActivity 的 onCreate()方法中調用了 ActivityCollector的 addActivity()方法,表明 將當前正在創建的活動添加到活動管理器裏。
然後在 BaseActivity中重寫 onDestroy()方法, 並調用了 ActivityCollector的 removeActivity()方法,表明將一個馬上要銷燬的活動從活動管 理器裏移除。
從此以後,不管你想在什麼地方退出程序,只需要調用 ActivityCollector.finishAll()方法 就可以了。
日常筆記