android 退出APP
2023-06-13 09:12:22 时间
大家好,又见面了,我是你们的朋友全栈君。
在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.cn/160724.html原文链接:https://javaforall.cn
相关文章
- android onresume方法,非静态方法’onResume’Android Studio
- Android浏览器调用APP「建议收藏」
- android签名命令行,Android系统签名位置及命令
- android app 退出功能,Android 完美退出 App (Exit)
- mac 电脑android环境变量设置,mac上Android环境变量配置[通俗易懂]
- android scaleanimation动画,Android 的ScaleAnimation 缩放动画基本运用
- 2022最新苹果APP上架App Store流程(超详细)
- 【Android】自制静音App,解决他人手机外放问题
- android 锁屏壁纸时钟,桌面锁屏时钟下载-桌面锁屏时钟app安卓版v2.8.0-七度网「建议收藏」
- app自动化测试(Android)--App 控件定位
- Android 用户态启动流程分析
- 【Android 应用开发】Android游戏音效实现
- 【Android 应用开发】Canvas 绘制文字 ( 文字尺寸测量 | 基线绘制 )
- 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android 屏幕适配】异形屏适配 ① ( 异形屏类型:刘海屏、水滴屏、挖孔屏 | 沉浸式布局刘海屏适配 | 华为手机异形屏适配注意点 )
- Android设备屏幕锁定/解锁/屏幕点亮监听详解手机开发
- 谷歌发布Android P Beta 2 包含最终版app编程接口详解手机开发
- App与MySQL的通信实现数据交互的新方式(app和mysql通信)
- 应用App连接Oracle,实现数据多元化管理(app连接oracle)
- cocos2d-2.0-x-2.0.3交叉编译到android报错解决
- Android笔记之:App列表之下拉刷新的使用
- Android实现类似360,QQ管家那样的悬浮窗