在onCreate() 中將Activity 執行個體 放到 線性容器中,,,, 退出時,一頓 ((Activity)list.gert(i)).finsh();
存在的問題也是很明顯的。。。
儲存了Activity的引用,是否會涉及,記憶體回收的問題。。。。(你得直到下面用的 是 強引用 的方式 哦。)
package com.mystore.customer.activity;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.lang.Thread.UncaughtExceptionHandler;import java.util.LinkedList;import java.util.List;import mylog.Log;import android.app.Activity;import android.app.Application;import android.content.pm.PackageManager.NameNotFoundException;import com.mystore.customer.activity.lookfor.LookForCustomerActivity;import com.mystore.customer.activity.more.MoreMessageActivity;import com.mystore.customer.activity.ramble.HotStoreActivity;import com.mystore.customer.activity.search.SearchMainActivity;public class CustomerApplication extends Application {private static final String TAG = "CustomerApplication";private static Application application;public static String VERSION = "1.1";public static Long EXIT_TIMEOUT = 2500l;//add activity container,used to exit app private List<Activity> activityList = new LinkedList<Activity>();private static CustomerApplication instance;// 單例模式中擷取唯一的ExitApplication 執行個體public static CustomerApplication getInstance() {if (null == instance) {instance = new CustomerApplication();}return instance;} // 添加Activity 到容器中public void addActivity(Activity activity) { activityList.add(activity); } // 遍曆所有Activity 並finishpublic void exit() {for (Activity activity : activityList) {activity.finish();}System.exit(0);}public void popToMainTab(){for (int i=activityList.size()-1;i>0;i--) {Activity activity = activityList.get(i);if(activity!=null){if( (HotStoreActivity.class).equals(activity.getClass()) || (MainActivity.class).equals(activity.getClass()) || (SearchMainActivity.class).equals(activity.getClass()) || (MoreMessageActivity.class).equals(activity.getClass()) || (LookForCustomerActivity.class).equals(activity.getClass())){//跳出迴圈break;}else{activity.finish();}}}} @Overridepublic void onCreate() {super.onCreate();Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {public void uncaughtException(Thread thread, Throwable throwable) {final Writer result = new StringWriter();final PrintWriter printWriter = new PrintWriter(result);throwable.printStackTrace(printWriter);String strStacktrace = result.toString();printWriter.close();Log.e("", "================================");Log.e("", "Force close occur, thread is: " + thread+ " throwable: " + throwable);Log.e("", " stacktrace " + strStacktrace);Log.e("", "================================");}});application = this;try {VERSION = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;} catch (NameNotFoundException e) {e.printStackTrace();}}public static Application getApplication() {return application;}}