在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 并finish public 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(); } } } } @Override public 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; } }