標籤:
由於在(Widget或Service、BroadcastReceiver中)使用startActivity()方法啟動activity時需使用FLAG_ACTIVITY_NEW_TASK flag,所以在BaseActivity中使用setresult標記退出時不能完全退出應用程式(只能關閉通過廣播開啟的activity以及之後開啟的activity)。
因此本文設計使用廣播退出應用程式:
1、在退出事件中發送退出廣播
Intent intent = new Intent();
intent.setAction("com.android.exitapp");
baseActivity.sendBroadcast(intent);
2、在BaseActivity中註冊廣播
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals("com.android.exitapp")) {
finish();
}
}
};
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(SystemConst.EXIT_APP);
this.registerReceiver(this.broadcastReceiver, filter);
}
通過此法就可以退出所有activity了。
android使用廣播退出應用程式