android退出应用程序的江湖七招(升级版)

Android应用完全退出方案:单例模式管理Activity的优化实践 本文探讨了Android应用中安全退出程序的优化方案。针对传统单例模式Activity管理存在的线程安全、内存泄漏等问题,提出了两种优化方案:一是使用双重检查锁定和CopyOnWriteArrayList实现线程安全的单例管理,并在BaseActivity中集成生命周期管理;二是采用WeakReference弱引用列表来避免内存泄漏,同时自动清理已回收的Activity引用。 阅读详情

去年的时候总结过三种退出android程序的方式http://blog.youkuaiyun.com/com360/article/details/6663669,

以前总结的不够好,也不够全面,今天晚上重新去总结一下退出android程序的方式,做为去年总结的升级,如果还有不全面的地方,

还敬请各位朋友指正..如果想讨论更多内容请加入这个QQ群:200956440

当应用不再使用时,通常需要关闭应用,可以使用以下两种方法关闭android应用:
第一种方法:首先获取当前进程的id,然后杀死该进程。  建议使用这种方式
android.os.Process.killProcess(android.os.Process.myPid())
第二种方法:终止当前正在运行的Java虚拟机,导致程序终止
System.exit(0);
或者
Runtime.getRuntime().exit(0);
第三种方法:强制关闭与该包有关联的一切执行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);   
manager.restartPackage(getPackageName());
使用这种方式关闭应用程序需要加上权限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
第四种方式:抛出异常
原理:在程序遇到非检查异常时,程序退被强制退出,那么虚拟器也将会被关闭,
     所以利用一个非检查异常,退出程序,但会遇到一个问题,就是强制退出的对话框的出现,是不是很恶心?
 其实没有关系,可以不让系统弹出对话框,看代码
public void exit(){
    	
    	Thread.currentThread().setUncaughtExceptionHandler(new java.lang.Thread.UncaughtExceptionHandler() {
			
			@Override
			public void uncaughtException(Thread thread, Throwable ex) {
				//遇到不可抓取的异常会到这里来,就不会弹出对话框了,完美结局
				//在这里最好让所有的activity全finish了,也另加入关闭进程的方法
			}
		});
    	String meIsNull = null;
    	//在这里肯定是空指针异常,遇到异常之后,执行上面的回调代码,就不会弹出对话框了
    	meIsNull.equals("空指针");
    }

第五种方式:用一个集合自己管理activity
     当一个activity创建的时候,把实例传递到那个管理activity的集合里,这个集合一般放在一个可全局访问的一个类内,
   最好那个类继承Application,然后在menifest的<application>标签的属性name上加上自己写的application类,这个类是单例的。
  退出的时候,遍历集合让所有的activity finish掉,最后调用关闭进程的那个方法
第六种方式:使用遍历的方式
  这种方式比较繁琐复杂,使用递归的方式,没当打开一个activity的时候都用startActivityForResult(),在onActivityResult()里接收结果关闭当前的activity,不推荐使用,太繁琐麻烦。
第七种方式:使用intent的flag实现
  原理:在android程序中,当打开一个activity的时候可以传进去这样一个flag:  Activity.FLAG_ACTIVITY_CLEAR_TOP,
  当打开那个新的activity的时候,任务栈里的所有activity将会被清空,最后只剩下那个新的activity,然后在新的activity
  里使用finish()把自己销毁了就可以了。

好了,就先写这里了,如果哪里不好,请各位吐槽。

增强型PID-自适应-前馈-神经网络控制研究(Matlab代码实现) 内容概要:本文系统研究了“增强型PID-自适应-前馈-神经网络控制”复合控制策略,结合Matlab代码与Simulink仿真模型,深入探讨了传统PID控制与智能控制算法的深度融合方法。该策略通过引入自适应机制和前馈补偿,结合BP神经网络进行非线性系统建模与参数优化,并融合扩展卡尔曼滤波(EKF)等状态估计技术,提升控制系统在复杂动态环境下的响应速度、鲁棒性和控制精度。研究涵盖双闭环控制架构设计、神经网络训练流程、EKF状态融合等关键技术环节,适用于电机控制、电力电子变换器、无人机、微电网等高阶非线性系统的建模与仿真。配套资源丰富,包含多个可复现的Simulink模型、Matlab代码及参考文献,尤其支持高水平EI期刊成果的复现与验证。; 适合人群:具备自动控制理论基础和Matlab/Simulink仿真能力,从事控制工程、电气自动化、电力电子或智能系统研发的研究生、科研人员及工作1-3年以上的工程技术人员; 使用场景及目标:①深入研究先进PID控制策略在非线性系统中的优化应用;②实现神经网络与经典控制算法的协同设计与联合仿真;③开展状态估计、参数辨识与智能控制策略的实验验证;④复现并拓展高水平学术论文中的控制方法,支撑科研创新与项目开发; 阅读建议:建议结合提供的Matlab代码与Simulink仿真模型进行实践操作,重点剖析控制结构设计逻辑、神经网络训练过程及EKF状态估计的实现细节,按照文档说明逐步调试与优化,以全面掌握复合控制系统的建模、仿真与性能评估方法。 立即下载

相关推荐

实战指南:如何用Frida绕过某梆加固的Anti-Frida检测(附完整脚本)

本文深入剖析了企业级加固方案中的Anti-Frida检测机制,并提供了实战对抗策略。通过分析基于文件系统、内存特征、行为及环境的多层次检测原理,文章详细介绍了如何定位检测逻辑、绕过maps文件扫描、对抗内存与行为特征检测,并附上了针对某梆加固的完整绕过脚本与系统化工程方案。

weixin_42527589的博客 597

android中完全退出当前应用程序的四种方法

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。   1. Dalvik VM的本地方法   android.os.Process.killProcess(android.os.Process.myPid())    //获取PID   ...

余炜的博客 250

echarts如何实现3D饼图(环形图)?

自定义修改3D饼图的宽高和legend

i-cat的博客 1万+

Android开发中程序退出的三种方法

<br />很多爱好者可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。<br />  首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧.<br />  1. Dalvik VM的本地方法<br />  android.os.Process.killProcess(android.os.Process

zeng622peng的专栏 1391

跨平台烧录实战:RKDevTool在Windows/Linux/MacOS下的统一与差异

本文详细解析了RKDevTool在Windows、Linux和macOS三大操作系统下的固件烧录实践,重点介绍了RK3576开发板的环境配置、工具链选择、烧录模式切换及常见问题解决方案,帮助开发者构建稳定可靠的跨平台烧录工作流。

cnn8visionary的博客 201

自抗扰(ADRC)控制原理及控制器设计

自抗扰控制原理以及控制器设计

weixin_43487974的博客 3万+

Android 强制且彻底的退出app

方法1、使用MyApplication.java文件代码如下: package com.ss.zshcloud.utils; import android.app.Activity; import android.app.Application; import java.util.LinkedList; import java.util.List; public class MyApp

木偶16的博客 1万+

最全卷积总结篇(分组、深度可分离、空洞、转置等)

分组卷积(Group Convolution)是一种卷积操作方式,它最早在AlexNet中引入,并在深度学习中被广泛使用,尤其是在高效模型设计(如MobileNet和ResNeXt)中。分组卷积通过将输入特征通道分为若干组,并在每组内单独进行卷积操作,可以减少计算复杂度和参数量,同时有效利用模型的结构特性。分组卷积的工作原理通道分组:输入特征图的通道图为C_in,输出特征图的通道数为C_out,将每组的C_in和C_out分为G组,每组的通道数为C_in/G和C_out/G。组内卷积。

qq_44815135的博客 4218

Android 完全退出当前应用程序的四种正确方法

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法 1. Dalvik VM的本地方法 复制代码代码如下: android.os.Process.killProcess(android.os.Proce

chanzhu的博客 2万+

逻辑回归:利用Python实现二分类算法

通过使用Python编写的代码,我们可以训练逻辑回归模型并进行预测。接下来,我们将实现逻辑回归算法的训练函数。训练函数将接受训练数据集X和对应的标签y,以及学习率alpha和迭代次数num_iterations。训练完成后,我们可以使用训练得到的参数theta来进行预测。在这个例子中,我们有一个包含4个样本的训练数据集X,每个样本有两个特征。在这个例子中,如果预测概率大于等于0.5,则预测为类别1,否则预测为类别0。现在,我们可以使用训练函数来训练模型。根据给定的样本x_new,预测函数将返回相应的类别。

XlltEditor的博客 326

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 476

两种情况下的Android应用退出代码

今天早上帮朋友调试代码,说是退出应用代码无效,仔细看了代码,写法上的确没什么问题,于是研究了一下,原因如下: 先看两种情况: (1)public class MainActivity extends TabActivity implements OnCheckedChangeListener (2)public class MainActivity extends Activity 都是要

程序猿 6647

华为防火墙——本地Portal认证

配置IP地址、路由、Nat策略使得内网主机可以访问公网服务器对网段不进行认证,对网段进行portal认证。

m0_49864110的博客 3258

android中退出当前应用程序的四种…

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。   1. Dalvik VM的本地方法   android.os.Process.killProcess(android.os.Process.myPid()) //获取PID   Sys

497

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android 实现程序完全退出

一开始做东西的时候,总是不知道如何才能实现程序的完全退出,百度和Google了一下,基本上都是System.exit(0) 或者android.os.Process.killProcess(android.os.Process.myPid()),但是最后还是发现程序没有真正的完全退出。 其实要实现程序完全退出也不是没有办法的,Google不可能没有想到让程序完成退出的。实现的方法很简单,

HeyNine的博客 2690

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android NDK中如何终止线程

============================================================博文原创,转载请声明出处电子咖啡(原id蓝岩)============================================================在Xcode中写好了c++代码,移植到android中,提示pthread_cancel找不到。google后发现

Eric's Blog 3191

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

登录后退出应用问题分析(jni libdvm )

有个应用再登录的时候突然退出,而应用说再其他平台上都是好的,所以是系统rom的问题.先看看log再说 native_eup( 4929): waitpid:return n=5143 status=00000b7f 10391 I/native_eup( 4929): child is stopped 10392 I/native_eup( 4929): cause by fatal si

smallmao的专栏 2530

如何完全退出android应用程序

Android应用程序开发中,如何完全退出android应用程序?网上朋友们也给出了各种答案,很多都是自己想的办法。如:android.os.Process.killProcess(android.os.Process.myPid());或:System.exit(0);还有推土机式,预先设置开始的空activity,关闭应用程序时定位到此activity,再逐一关闭等。诸如此类很多方法。这几天闲...

xu13879531489的专栏 631

android 命令结束进程,android – ‘:app:ndkBuild’的执行失败.进程’命令ndk-build.cmd’以非零退出值2结束...

我已经坚持这个问题2天了,并尝试了stackoverflow上给出的所有可能的解决方案.下面是我的build.gradle文件:apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVersion "25.0.3"sourceSets.main.jni.srcDirs = []sourceSets...

weixin_32151313的博客 397

java安卓结束进程_Android 实现彻底退出自己APP 并杀掉所有相关的进程

彻底杀掉 App 相关进程的代码public void killAppProcess(){//注意:不能先杀掉主进程,否则逻辑代码无法继续执行,需先杀掉相关进程最后杀掉主进程ActivityManager mActivityManager = (ActivityManager)CurrentActivity.this.getSystemService(Context.ACTIVITY_SERVIC...

weixin_39865061的博客 705

android完全退出应用程序的三种方式

当应用不再使用时,通常需要关闭应用,可以使用以下两种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。  建议使用这种方式 android.os.Process.killProcess(android.os.Process.myPid())

com360的专栏 9193

怎样退出终止App

1. Dalvik VM的本地方法   android.os.Process.killProcess(android.os.Process.myPid())    //获取PID    System.exit(0);   //常规java、c#的标准退出法,返回值为0代表正常退出   2. 任务管理器方法    首先要说明该方法运行在Android 1.5 API Lev

Tongseng‘s Blog 2223

android 实现退出app仍然在后台运行

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(false); return true; } retu...

Misters_Chen的博客 1万+

Android 中几种优雅的退出APP方式介绍

前言 最近由于项目的修改,项目由MainActivity按返回键一次退出修改为MainActivity中连续按两次返回键退出,顺便优化一下推出这里的代码。因此还是在网上搜索了一番,总结比较之后得出了有以下集中方式,优缺点都会提出来,有需要的老铁按需选择。 目录 常见的有5中方式: 容器式 便捷式 广播式 SingleTask式 进程式 实现方法 1.容器式 容器式可能是我们最常见的方式之一...

weixin_33705053的博客 2734
上一篇: 关于自定义组件-以apidemo中的LabelView进行讲解
下一篇: git学习资料
com360
博客等级 码龄16年 225粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值