當我們在一個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();
}