當我們在一個anctivity中需要關閉其他已經打開的activity的時候,廣播退出機制是一個比較好的辦法
下面來看源碼,首先,我們需要先寫一個父類:BaseActivity.java
package com.createnets.www; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class BaseActivity extends Activity { protected BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { finish(); //殺死進程 android.os.Process.killProcess(android.os.Process.myPid()); } }; @Override public void onResume() { super.onResume(); // 在當前的activity中註冊廣播 IntentFilter filter = new IntentFilter(); filter.addAction("ExitApp"); this.registerReceiver(this.broadcastReceiver, filter); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); this.unregisterReceiver(this.broadcastReceiver); } }
然後呢,我們隻需要子類去繼承這個父類就行:
然後,我們需要在需要退出的activity,或者是“退出” 按鈕所在的activity中加入close()函數即可,然後調用這個函數
//關閉activity,隻在需要退出的界面中使用 public void close() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); // 說明動作 this.sendBroadcast(intent);// 該函數用於發送廣播 super.finish(); }