大家好,又见面了,我是你们的朋友全栈君。
在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; } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160724.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...