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

}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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