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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 9300反编译apk「建议收藏」

    9300反编译apk「建议收藏」1.首先,下载这货apktool_ics_jb_imobile.com.cn.rar(7.39MB,下载次数:589)奇怪版本的apktool,由1.4.2和1.4.4版混和而成2.请确保你已经安装了JDK,还有WinRAR之类的解压软件,如果没有自行解决吧3.将下载好的东西解压到某个文件夹里,如图(文件以压缩包实际所含文件为准,此图仅示意,下同):…

    2022年9月16日
    0
  • Mina框架的使用[通俗易懂]

    什么是Mina框架ApacheMina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Javanio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。是用来代替NIO网络框架的,对NIO框架进行了一层封装的Socket库。Mina主页下载地址为什么使用Mina?传统socket:阻塞式通信每建立一个Socket连接时,同时创建一个新线程对该Soc

    2022年4月17日
    91
  • 字符串全排列cpp_输出字符串的全排列

    字符串全排列cpp_输出字符串的全排列String对象描述字符串是JavaScript的一种基本的数据类型String类定义了大量操作字符串的方法,例如从字符串中提取字符或子串,或者检索字符或子串。需要注意的是:JavaScript的字符串是不可变的(immutable),String类定义的方法都不能改变字符串的内容。像String.toUpperCase()这样的方法,返回的是全新的字符串,而不是修改原始字符串。String对象属性属性描述constructor对创建该对象的函数的引用

    2022年10月30日
    0
  • httpclient4 请一定设置超时时间

    httpclient4 请一定设置超时时间httpclient4的设置方式和httpclient3有所不同,代码如下:HttpClienthttpclient=newDefaultHttpClient();httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,Config.20000);//连接时间20shttp

    2022年7月22日
    7
  • SMART S7-200PLC流量累计算法实现(梯形图算法详解+优化)

    SMART S7-200PLC流量累计算法实现(梯形图算法详解+优化)流量累计基于积分的原理,采用细分面积的方法近似计算瞬时流量的累加。也是离散上的累加求和,公式虽然简单但是流量累计仍有些需要注意的地方,下面一一和大家举例说明。

    2022年9月10日
    0
  • linux查看权限命令

    linux查看权限命令查看权限命令查看目录的相关权限可以采用命令ls-lD,或者直接用ls-la如ls-lwwwt//这里表示查看www目录修改权限命令chmod777文件名1.chmod577/home/stuser-R2.umask-p02003.chownXXXXYYYY(XXXX为用户名YYYY为文件名)权限列表-rw——-(600)只有所有者才…

    2022年5月15日
    65

发表回复

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

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