① 如何完全退出單例模式下的android應用程序,非常好用
首先問題是這樣的,比如:我剛進入應用時有一個歡迎頁面(E),隨後進入主A,我從A->B->C->D,然後直接從D返回到A,在A中完全退出應用。對於android自帶的1.5 - 2.1以及2.2之後完全退出應用的API我都試了,但還是實現不了,有的是能退出,但是歡迎頁面就沒有了,可能是我的原因。 後來我是這樣實現的,當然有點老土,但還是能實現的。如下,同樣也歡迎拍磚
public class ExitApplication extends Application {
//存儲已打開的Activity集合
private List<Activity> list = new ArrayList<Activity>();
//單例的ExitApplication,目的是在任何的Activity中用的都是同一個集合
private static ExitApplication ea;
private ExitApplication(){
}
public static ExitApplication getInstance(){
if(null==ea){
ea = new ExitApplication();
}
return ea;
}
/**
* 添加Activity到集合中
*/
public void addActivity(Activity activity){
list.add(activity);
}
public void exit(Context context){
Dialog dialog = new AlertDialog.Builder(context).setTitle("確認退出")
.setMessage("確定退出該系統?")
.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
for(Activity activity:list){
activity.finish();
}
System.exit(0);
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
}
}).create();
dialog.show();
}
}
我這個必須是單例的,因為我要確保把每個UI都加進一個集合中,所以...,至於對單例有疑問的,可以上網查詢,
然後在每個Activity的onCreate方法中調用ExitApplication.getInstance().addActivity(this);,然後在處理退出請求中直接調用ExitApplication.getInstance().exit(this);即可。
轉載