android 模拟应用因内存不足被后台杀死命令 https://www.jianshu.com/p/effb4546b9aa

adb shell am kill-all  应用通过home键已经停留在后台使用,杀掉所有后台程序,需要先将目标程序按home进入后台,然后打开一个其他程序

ps:命令多运行几次

处理Android应用在后台被杀死 https://blog.csdn.net/xiao_nian/article/details/79970144

一、背景

我们在使用android app的过程中,可能突然会遇到其他的事情需要将app退到后台,比如微信来了一条消息需要回复,当我们回复完消息在切换回我们的app时,如果处理不好,应用可能会白屏或者闪退。造成这种现象的原因,是android的进程回收机制,android会给每一个应用分配一定的内存,当应用退入后台时,系统并不会将应用杀死,而是将应用缓存起来。打开的应用越多,后台缓存的进程也越多,那么占用的内存也越大,当系统内存不足时,就会根据自己的一套进程回收机制去杀死应用,以便腾出内存空间来分配给其他的应用,后面会详细分析android的进程回收机制。也就是说,当我们将应用退入后台后,应用很可能会因为系统内存不足而被杀死,应用被杀死后,所有的Activity都被销毁了,但是Android也提供了一定的补救措施,activity棧并没有被清空,也就是说如果之前的Activity棧中的内容是A-->B-->C,只是ABC这三个Activity的对象被销毁了,当我们切换应用时,系统首先会重新创建Activity C,由于需要重新创建Activity实例,需要耗费一点时间,所有会有短暂的白屏现象。另外当Activity被意外杀死时,Android会调用Activity的onSaveInstance让开发者去保存应用的数据,在重新创建Activity时,会调用onRestoreInstanceState来恢复应用数据,但是针对大量需要恢复的数据,一旦处理不当,就有可能造成应用闪退,比如,应用在后台被杀死后,所有的静态变量都会被清空,这个时候我们如果直接使用这些静态变量,就会报空指针异常,从而造成程序闪退。

二、解决办法

针对需要恢复的数据比较少的应用,我们可以通过Activity的onSaveInstance和onRestoreInstanceState去恢复,针对静态变量比较多的情况,我们可以考虑采用数据持久化的方式,所有的静态对象都改为单例模式,然后附加上一些持久化cache,空了再取缓存。嗯,这肯定也是一个办法,但是这样的束手束脚对开发来说也是痛苦,一旦处理漏了就会发生空指针异常。我们能不能换一种思路来解决上面的问题,当应用在后台被杀死时,不做Activity棧的恢复,清空Activity棧,并且直接启动应用的第一个Activity,一般是欢迎界面,这样的话,应用就相当于重启了一次,所有的逻辑都会重新开始,也就不存在静态变量为空的问题了,目前很多应用都是这样处理的。那么我们如何判断应用已经被杀死并重新创建了呢?因为静态变量的生命周期和应用的生命周期是一致的,应用被杀死后,静态变量会被回收掉,重新启动静态变量的数据会重新初始化,可以考虑定义在应用中定义一个静态变量,初始值为0,在应用的第一个界面的onCreate方法中将静态变量设置为1,表示应用走的是正常的启动流程,然后写一个基类的BaseActivity,其他的Activity都继承BaseActivity,在BaseActivity的onCreate方法中判断静态变量的值是否为1,如果不为1,则表示应用不是通过正常的流程启动的,则清空Activity棧,并启动第一个Activity。具体代码如下

被后台杀死后,Android应用如何重新走闪屏逻辑 https://www.jianshu.com/p/4fc10026c1f8

Android 后台杀死及恢复的机制 https://juejin.im/post/6844903863422550023

Android app 后台被杀恢复相关推荐

  1. android app防被杀策略

    Service篇 <service             android:name="com.example.service.**Service"             ...

  2. android app后台收不到消息,不打开智能关怀App收不到手表发的消息

    不打开智能关怀App手机收不到手表发的聊天消息.进出安全区域.开关机.视频通话.奖励等消息通知.一般是由于智能关怀App 的后台保护设置及消息通知权限设置未正确设置导致的,以下为常见机型智能关怀App ...

  3. Android app后台运行休眠仍然可以运行的方法(确保一直运行)

    在播放器app中由于需要用后台service 来播放音乐,所以一旦进入休眠状态时,就有可能被杀掉进程 所以需要让service 一直运行不被杀掉进程 在android 中WakeLock的相关 API ...

  4. Android9.0 添加APP后台防杀机制

    软件平台:Android9.0 硬件平台:MTK6771 开发过程中遇到在系统资源紧张的时候,后台进程被LMK杀死的情况,下面提供一个防杀策略,供参考: diff --git a/services/c ...

  5. Android App后台、锁屏运行,百度定位不实时定位。未解问题,求大神指教?

    细节描述: 功能需要实现:App 一直给后台上传经纬度.(正常运行,后台运行,锁屏运行) 问题描述:红米Note 5A. 在A点,App 锁屏,走到B 点,然而在A---B之间一直上传的是A点锁屏前的 ...

  6. Android app应用开发高级进阶系列专栏解读

    1.前言 在从事android app开发的几年里,最开始接触做android 都是从app开发开始做的,在做app的这几年中把积累下来的做的一些功能,都整理出来了作为自己的技术资料,在以后开发类似的 ...

  7. Android 后台杀死及恢复的机制

    App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候,经常会遇 ...

  8. Android APP杀不死(最大存活方法)

    前言: 有很多APP和需求,需要让APP不被系统杀死.然而,我在这里,必须明确的跟各位安卓开发者说的就是,这个需求就跟让物理学家发明永动机一样,是不可行的.然而,我们却可以尽最大的可能性让APP存活下 ...

  9. Android 关于后台杀死App之后改变服务器状态的一些尝试

    前言: 如题,我的需求是:我需要在App在后台运行(未退出),调出最近运行记录,杀死App服务时,程序能够向服务器发送一条指令,以此达到我想要的目的. Android方面刚刚才开始玩,我一开始想的是可 ...

最新文章

  1. cp: /usr/bin/chromedriver: Operation not permitted
  2. R语言使用ggExtra包的ggMarginal函数在散点图的顶部和右侧添加边缘直方图、自定义边缘直方图不同分组的填充色(Coloring Marginal Histograms)
  3. 实现统计一个字符串中的每个单词出现的次数--基于Go语言
  4. 工具类--Excel 导出poi
  5. 编写函数digit(num, k),函数功能是:求整数num从右边开始的第k位数字的值,如果num位数不足k位则返回0。...
  6. Spark常用的算子以及Scala函数总结
  7. EIGRP分解试验部分-LAB1:EIGRP基本试验
  8. 大数据技术应用需注意哪些问题
  9. 【TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】
  10. python scipy库函数solve用法_python scipy linalg.solve_banded用法及代码示例
  11. 剑指offer 面试26题
  12. clover删除多余引导_[转载]EFI引导如何去掉多余的这个clover启动项
  13. 华硕主板前置耳机插孔没有声音怎么办
  14. MySql Workbench 8.0汉化插件分享
  15. android 画布抗锯齿,怎么在Android应用中利用paint与Canvas实现抗锯齿效果
  16. 云原生 Kuma 简单部署与使用
  17. 答案揭晓 | 关于云基础架构,你了解多少?
  18. 报表在linux下部署后中文变成小方块
  19. linux usb子系统.框架
  20. 解决 el-checkbox-group 值为对象的时候 复选框回显问题

热门文章

  1. 20层的试炼html5,Vue.js-02:新手村的试炼 - 新世界的武器(指令)
  2. 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
  3. 2019八泉峡第二届国际露营大会圆满落幕 创新举措引爆景区
  4. android 点击图标重启,Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法...
  5. Gnome桌面的录屏插件easyscreencast
  6. 成员函数的重载、覆盖与隐藏(详细)【转】
  7. Mac下的Adobe卸载后无法重装
  8. C语言中p=(1 r) n,如何计算p=c/(1+r)+c/(1+r)*(1+r)+........+c/(1+r)的n次方+m/(1+r)的n次方
  9. MATLAB-Appdesigner中的函数调用
  10. bootstraptable treegrid