android 退出APP

android 退出APP在onCreate()中将Activity实例放到线性容器中,,,,退出时,一顿((Activity)list.gert(i)).finsh();存在的问题也是很明显的。。。保存了Activity的引用,是否会涉及,内存回收的问题。。。。(你得直到下面用的是强引用的方式哦。)packagecom.mystore.customer.act

大家好,又见面了,我是你们的朋友全栈君。

在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;
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160724.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 心形线的图形_心形线公式

    心形线的图形_心形线公式心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名。当然我觉得与其说它像心,还不如说它像屁股。相关软件参见:数学图形可视化工具,使用自己定义语

    2022年8月1日
    1
  • windows环境配置xdebug

    windows环境配置xdebugwindows环境配置xdebug

    2022年4月24日
    45
  • go语言goquery下载图片实例「建议收藏」

    crawl.gopackagemainimport(“fmt””strings””strconv””net/http””net/url””io/ioutil””os””log””runtime””flag””github.com/PuerkitoBio/goquery”)constH

    2022年4月9日
    94
  • 【mysql】存储引擎

    【mysql】存储引擎【mysql】存储引擎

    2022年4月25日
    29
  • 安全帽识别系统-智慧工地的守护者

    安全帽识别系统-智慧工地的守护者安全帽识别系统能够实时对未佩戴安全帽的行为发出警告,及时提醒监理人员处理,为作业人员筑起一道人工智能的安全防火墙。鹰眸安全帽识别系统面世之后,在业界引起了不小的震动,相关企业不但积极推广,还提出了许多建设性的意见,毕竟将人工智能的深度学习应用于视频分析还是很新的事物,那么鹰眸安全帽识别系统能做什么,在此与大家一起分享,希望起到抛砖引玉的作用。一、鹰眸安全帽识别系统通过视频实时分析工作区域,如…

    2022年5月15日
    40
  • 向量内积_向量的内积和外积公式

    向量内积_向量的内积和外积公式向量内积一般指点积;在数学中,数量积(dotproduct;scalarproduct,也称为点积)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。[1] 两个向量a=[a1,a2,…,an]和b=[b1,b2,…,bn]的点积定义为:a·b=a1b1+a2b2+……+anbn。使用矩阵乘法并把(纵列)

    2022年9月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号