优雅的App完全退出方案(没有任何内存泄漏隐患)

在Android开发过程中,特别是界面比较多的情况下,用平常的退出方式往往是不能完全退出这个应用,网络上也好多各种退出方案。其中一种应该是被广大开发者采纳使用,也非常的清晰方便,就是在Application中维护一个单例的List<Activity>管理容器,每次打开新的Activity就把当前Activity加入到容器中,然后在需要完全退出的时,就循环遍历该容器分别finish()每个Activity,即达到完全退出功能。

虽然这种退出方式很好,但却存在内存泄漏的隐患,所以,我们还需要再找更优的方案。这里给出一个非常好的、实现超级简单的方法,不需要通过什么管理Activity,而是通过在Activity的启动模式上做文章。

举个例子!

比如:有一个应用一打开首先进入A界面(引导界面)、再进入B界面(主界面)、然后进入C界面、进入D界面、进入E界面、进入F界面、再返回到B界面(主界面)、然后进入G界面、进入H界面,最后再返回到B界面(主界面),即流程为A->B->C->D->E->F->B->G->H->B。如果Activity是按默认的启动模式,则在主界面B上点退出按钮要退出整个app的话,则需要依次关闭B-H-G-B-F-E-D-C-B-A界面,然并卵......这谁也不愿意这样关闭啊。但是我们如果设置B界面(主界面):android:launchMode="singleTask",那么启动过程从A->B->C->D->E->F->B到B界面上时,这时候不会重新创建一个B界面,而是自动finish掉C、D、E、F界面后再使用原来那个B界面。然后再从B->G->H->B,也是会自动finish掉G、H界面而使用之前的B界面。所以,退出整个app应用也就只需退出界面A和界面B了,而A界面是引导界面,当从A进入B的时候就可以先finish掉A,然而,现在只需要在主界面B上finish自己就可以了。

轻轻松松完成整个App应用的退出!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 11:10:54

优雅的App完全退出方案(没有任何内存泄漏隐患)的相关文章

优雅的App全然退出方案(没有不论什么内存泄漏隐患)

在Android开发过程中,特别是界面比較多的情况下,用寻常的退出方式往往是不能全然退出这个应用,网络上也好多各种退出方案.当中一种应该是被广大开发人员採纳使用,也很的清晰方便.就是在Application中维护一个单例的List<Activity>管理容器,每次打开新的Activity就把当前Activity增加到容器中,然后在须要全然退出的时.就循环遍历该容器分别finish()每一个Activity.即达到全然退出功能. 尽管这样的退出方式非常好.但却存在内存泄漏的隐患.所以,我们还须要

移动端调试 — Pure|微信环境调试方案|App环境调试方案

Pure 详细参见: 中文文档:http://leeluolee.github.io/2014/10/24/use-puer-helpus-developer-frontend/ 源码:https://github.com/leeluolee/puer 微信环境调试方案 微信开发者工具现在不能用了,对于前端来说,主要调试分享,和微信授权,这两块都有成熟解决方案. 其次,需要调试一些浏览器样式兼容问题,这个..微信浏览器内核是X5内核,兼容性良好,具体兼容性问题具体分析吧 如下,分享下微信环境踩过

浅析APP安全现状,爱加密为APP提供加固方案!

近日苹果APP安全事件一时成为热点,苹果也已经证实大量应用程序被恶意代码感染,多款知名社交.地图.出行APP的iPhone版均被爆出有"恶意代 码",腾讯发布报告称受影响用户可能超过1亿.记者多方采访了解到,本次事件"源头"叫Xcode,受恶意代码影响,由这款工具开发的iOS版APP以及 MacOS的程序都会被影响,都存在泄露个人隐私的危险. 除了长期标榜自身安全性却陷入安全危机的苹果,还有长期处于尴尬境地的安卓平 台,面对安卓操作系统大家应该知道,Android是

APP排查内存泄漏最简单和直观的方法

    内存泄漏无疑会严重影响用户体验,一些本应该废弃的资源和对象无法被释放,导致手机内存的浪费,app使用的卡顿,那么如何排查内存泄漏呢? 当然,首先我们有google的官方文档可以参考,大部分博客的方法也来自于此.总的来说,就是使用android studio 的monitor memory功能监测app主进程占用的内存,触发GC操作,而后观察内存的占用情况,如果在使用的过程中内存不断增加,没有回落,很有可能发生了内存泄漏,这时候就需要导出内存分配的具体详情进行深入分析了. 内存监测曲线 但

常见的八种导致 APP 内存泄漏的问题(上)

百度搜索:小强测试品牌 QQ群:138269539 像 Java 这样具有垃圾回收功能的语言的好处之一,就是程序员无需手动管理内存分配.这减少了段错误(segmentation fault)导致的闪退,也减少了内存泄漏导致的堆空间膨胀,让编写的代码更加安全.然而,Java 中依然有可能发生内存泄漏.所以你的安卓 APP 依然有可能浪费了大量的内存,甚至由于内存耗尽(OOM)导致闪退. 传统的内存泄漏是由忘记释放分配的内存导致的,而逻辑上的内存泄漏则是由于忘记在对象不再被使用的时候释放对其的引用导

常见的八种导致 APP 内存泄漏的问题(下)

百度搜索:小强测试品牌 QQ群:138269539 Handlers 同 样的,定义一个匿名的 Runnable 对象并将其提交到 Handler 上也可能导致 activity 泄漏.Runnable 对象间接地引用了定义它的activity 对象,而它会被提交到 Handler 的 MessageQueue 中,如果它在 activity 销毁时还没有被处理,那就会导致 activity 泄漏了. Threads 同样的,使用 Thread 和 TimerTask 也可能导致 activit

android 内存泄漏和内存优化方案

一般来说的内存泄漏指的是已经不需要使用的对象因为一直被其他对象持有引用导致无法及时被系统所回收,以致该对象在堆中所占用的内存单元无法被释放而造成内存空间浪费. 在编写代码的时候很多不良的习惯会导致内存泄漏,相信刚开始的时候许多人只会注重功能的实现,对内存的优化不会花太多的时间,那么哪些情况会造成内存的泄漏呢,我来举例说明 单例导致内存泄露 单例模式在Android开发中会经常用到,但是如果使用不当就会导致内存泄露.因为单例的静态特性使得它的生命周期同应用的生命周期一样长,如果一个对象已经没有用处

C/C++应用程序内存泄漏检查统计方案

一.前绪 C/C++程序给某些程序员的几大印象之一就是内存自己管理容易泄漏容易崩,笔者曾经在一个产品中使用C语言开发维护部分模块,只要产品有内存泄漏和崩溃的问题,就被甩锅“我的程序是C#开发的内存都是托管的,C++那边也没有内存(庇护其好友),肯定是C这边的问题”(话说一个十几年的程序员还停留在语言层面不觉得有点low吗),笔者毕业不到一年,听到此语心里一万头草泥马奔腾而过,默默地修改了程序,注意不是修改bug(哈哈),而是把所有malloc和free都替换成了自定义宏MALLOC和FREE,d

App跨平台开发方案与抉择

内心强大才敢于承认错误,但是首先你要敢于去试错. 现在做客户端开发的公司都会面临一个巨大的问题,那么就是跨平台.对于目前上市面上的移动设备来说.Android.IOS.WindowsPhone.BlackBattery等等移动设备系统,让我们在开发适配上都很头痛. 但是由于Google与Apple公司的竞争,现在创业公司主要关注的就只有是Android和IOS应用程序了.但是,就这两个系统的设备就够我们折腾了.从系统版本适配.屏幕适配等等. 朋友的创业公司,对于开发一个简单的App,Androi