所以你的问题似乎是“当你继续向堆栈应用程序添加太多活动时会逐渐抛出OOM异常”,并且你认为原因可能是切换活动时顶层Fragment上没有调用onDestroyView().

OnDestroyView()

首先,当你从Activity1转到Activity2时,很可能onStroyView()不会在Activity1中的Fragment上调用,因为在启动Activity2之后你没有在Activity1中调用finish().

这意味着您的Activity1在活动后台中很活跃,但已停止(即onStop调用).由于Activity1还活着,所以它的后座和它也是如此.片段. Activity1的Backstack顶部的片段也将停止.因此,基本上,当您使用“主页”按钮将应用程序发送到后台时,Activity1处于与其输入的状态类似的状态.

在其他情况下,当在片段backstack中在其上方添加另一个片段时,在片段上调用onDestroyView().但是,它不了解活动后台/活动任务.

如果要清除片段的视图,可以手动执行(即fragmentManager.popbackstack()或beginTrasaction.remove(…)),也可以在启动Activity2后关闭Activity1(即调用finish()) – 这也将释放你的内存,并在Activity1的顶部片段上调用onDestroyView().

OutOfMemoryException异常

…when I go on adding too many activity to the stack app throws OOM

exception gradually.

很可能OOM崩溃的原因是你的内存中有太多的Activity实例,而不是某些片段上没有调用onDestroyView().我还假设您有多个相同活动的实例.

在AndroidManifest.xml中声明您的活动时,请考虑使用android:launchMode =“singleTask”(reference).这可确保您在给定任务中只有一个特定活动的单个实例.如果它是由同一个Activity的太多实例严格导致的,那么它本身应该修复你的OutOfMemory问题.

这种方法本身意味着您需要进行某些额外的处理,将重用的活动的UI /状态重置为“干净”的状态.幸运的是,您可以依靠onNewIntent(…)(reference)来检测何时需要这样做.

稍后编辑:内存监视器

关于搜索OutOfMemory错误的原因:请使用Android Memory Monitor搜索内存泄漏.我发现内存泄漏是讨厌的小鬼,从一开始就使用内存监视器总是比(知情)猜测更好.

在您的情况下,在使用您的应用程序一段时间后,在执行一些活动开关后,您需要查看内存中是否有特定活动的多个实例(例如,Activity1).

基本上,你需要寻找类似的东西:

只记得在进行堆转储之前强制垃圾收集器几次(只有一次是不够的).这是为了确保在某些点上垃圾收集的引用不会出现在转储中.

希望这可以帮助

android view stop,android – onDestroyView片段永远不会在onStop之后调用相关推荐

  1. android view禁用,Android 禁止ViewPager的自带滑动效果

    由于最近在做墨水屏的相关工作,ViewPager自带的滑动效果在墨水屏上表现的很不好,残影太重了.所以禁止自带的滑动效果,用接口来接管相关逻辑实现自处理. import android.content ...

  2. Android view变形,android仿变形金刚效果实现MatchView

    what?变形金刚!先看效果吧! MainActivity.javapackage com.lee.matchview; import com.example.matchview.R; import ...

  3. Android view.settran,Android RecyclerView从入门到玩坏

    目录 前言 基础使用 分隔线 点击监听 搭配CardView 更丰富的条目 增删条目 快速添加视图 让RecyclerView支持复杂视图 最后前言 RecyclerView在Android界面开发当 ...

  4. android view嵌套,Android RecyclerView嵌套RecyclerView点击事件

    RecyclerView嵌套RecyclerView点击事件遇到取值错乱的问题 其实问题根本就是咱们没有处理好被嵌套的那层recycleview的position 那么解决思路也很简单,想办法把被嵌套 ...

  5. android.view.surface,Android SurfaceView 源码分析及使用

    概述 SurfaceView 是 Android 中一种比较特殊的视图(View),它跟平时时候的 TextView.Button 最大的区别是它跟它的视图容器并不是在同一个视图层上,它的 UI 显示 ...

  6. android view flipper,Android之ViewFlipper的简单使用

    大家都使用过ViewPager,但是ViewPager还有一个兄弟,那就是ViewFlipper.两者的名字非常相似,我们可以将ViewPager理解成"一页一页的视图",View ...

  7. android view ondestroy,Android片段onCreateView在onDestroy之后不再調用。

    According to the Android fragment lifecycle i would expect that after onDestroy the fragment will be ...

  8. android view setleft,android – 在新textview上使用setLeft / setRight方法

    我正在以编程方式使用TextViews,我需要动态添加新视图并在RelativeLayout父级中设置它们的左/顶位置. 我正在做的是这样的: RelativeLayout global=(Relat ...

  9. android view 平滑,Android移动view动画问题(让移动更平滑)

    Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题,总结记录以共勉. 仅以水平方向移动效果做说明,垂直方向类似. 完整动画函数代码: public void slideview ...

最新文章

  1. ArcGIS JavaScript API本地部署离线开发环境
  2. php mysql 组件_Ubuntu20.04安装apache、mysql、php、phpmyadmin、wordpress(一)
  3. 关于PPP认证中的PAP和CHAP原理取证与相关疑问
  4. 【喜报】利用COOC又发表了多篇一区SCI、SSCI、CSSCI
  5. 所有浏览器主页都变成hao123,hao123劫持浏览器(亲测有效)
  6. 主机MTU值和Docker MTU值不一致导致Harbor无法推送问题
  7. MySQL 批量插入/填充数据 - 实践
  8. 设置QQ的个性在线状态图片
  9. 关于张量的一点点小思考
  10. 网络安全周 | 分享8个网络安全小知识
  11. 重庆培临创新计算机学校,高铁培训职业学校_重庆市涪陵创新计算机学校
  12. 安卓机使用anydesk 远程控制 Ubuntu18.04 成功
  13. esp8266电池供电方案_节能小妙招,8个太阳能供电案例抢先围观
  14. 妻子、情人、红颜知己
  15. fatal: unable to access ‘https://github.com/raw-recruit678/Leetcode.git/‘: OpenSSL SSL_read: Connect
  16. Tensorflow的MNIST进阶教程CNN网络参数理解
  17. 不同样本之间的相似性度量(Similarity Measurement)
  18. 基于8086的电子秒表
  19. Android:Frament详解
  20. python游戏编程入门免费_python游戏编程入门 python游戏编程入门课

热门文章

  1. Spring Boot基础学习笔记01:Spring Boot入门程序
  2. 数据结构学习笔记:时间复杂度
  3. Go的数组切片 Python的列表
  4. 【BZOJ1051】受欢迎的牛,tarjan缩点重构图
  5. 没有run窗口_使用 Terminator 在一个窗口中运行多个终端 | Linux 中国
  6. mysql中的lgwr_MySQL Replication和Oracle logical standby的原理对比
  7. 分解cad图纸的蜂鸟工具_知道这些CAD统计技巧,让你计算事半功倍!
  8. bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
  9. RELL软件测试初学者化妆品,浅析软件测试流程在高校软件测试工作室中的应用...
  10. Intel处理器电源管理技术(1) - 概述 - 8086/286/386SL/486SL APM ACPI