【解惑】App处于前台,Activity就不会被回收了?(下)

简介: 【解惑】App处于前台,Activity就不会被回收了?

内存监控机制


跟回:BinderInternal.addGcWatcher()


网络异常,图片无法展示
|


这里可能看得你有点迷,但是当你理解了就会觉得很妙了:


虚拟机GC会干掉 WeakReference 的对象,在释放内存前,会调用对象的 finalize(),而这里有创建了一个新的 WeakReference 实例。下次GC,又会走一遍这里的代码,啧啧啧,相比起轮询高效多了


到此,应用内存不足回收Activity的流程就大概缕清了,接着可以写个代码验证下是否真的这样。


Demo验证


先试下两个Task的:


网络异常,图片无法展示
|


模拟内存分配的页面,然后一直点~


网络异常,图片无法展示
|


网络异常,图片无法展示
|


宁愿OOM,也不回收,试试三个~


网络异常,图片无法展示
|


网络异常,图片无法展示
|


好家伙,onDestory()了,此时按Back回退这些页面,发现走了onCreate(),即回收了,接着试试四个的情况:


网络异常,图片无法展示
|


网络异常,图片无法展示
|


可以,每次只回收一个Task,到此验证完毕了~


0x3、结论


  • 系统内存不足时,直接在内核层查杀(回收)进程,并不会考虑回收哪个Activity;


  • 进程内存不足时,如果此进程 Activity Task数 >= 3 且 使用内存超过3/4,会对 不可见 Task进行回收,每次回收 1个 Task,回收时机为每次gc;


参考文献:






相关文章
|
8月前
|
XML Java Android开发
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
1080 0
|
8月前
|
Android开发
App Inventor 2 Activity启动器技巧:如何查看并启动其他App
Activity启动器(ActivityStarter)如何查看并启动其他App,可以通过解压源码查看,或使用“包名查看器”App查看,不同品牌手机可能略有不同。
237 0
|
8月前
|
Android开发
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
364 0
|
8月前
|
XML 安全 Java
Android Studio App开发入门之活动Activity中为活动补充附加信息讲解及实战(附源码 超详细必看)
Android Studio App开发入门之活动Activity中为活动补充附加信息讲解及实战(附源码 超详细必看)
71 0
|
8月前
|
Android开发
Android Studio APP开发入门之活动Activity中启停活动页面的讲解及实战(附源码,包括Activity的启动结束、生命周期、跳转等)
Android Studio APP开发入门之活动Activity中启停活动页面的讲解及实战(附源码,包括Activity的启动结束、生命周期、跳转等)
167 0
|
Android开发 Kotlin
判断App是否处于后台/前台,使用ActivityLifecycleCallbacks稳得很!
RunningAppProcessInfo.IMPORTANCE_FOREGROUND,或者RunningTask来判断过, 但是遇到过偶然失灵或者无法适配现在的android版本。毕竟太老了,现在用点进去经常会有@Deprecated注解,表示废弃了。
|
Java Android开发
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
283 0
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
|
Android开发
Android 音乐APP(六)Activity和Notification通讯
Android 音乐APP(六)Activity和Notification通讯
292 0
Android 音乐APP(六)Activity和Notification通讯
App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW in
App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW in
135 0
|
Android开发
如何打开APP在应用市场中对应的的activity页面---Android拓展篇
如何打开APP在应用市场中对应的的activity页面---Android拓展篇
218 0

热门文章

最新文章

  • 1
    DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
  • 2
    圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
  • 3
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
  • 4
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 5
    电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
  • 6
    京东商品详情数据接口(H5、APP 端)
  • 7
    年轻人如何运用圈子系统进行扩列,社交圈子论坛app扩列的好处,兴趣行业圈子提升社交技能
  • 8
    【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
  • 9
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 10
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈