android - Android 上如何确定设备内存不足

标签 android multithreading memory process ram

我的应用程序是在前台运行的后台服务。在内存不足的情况下,我的一些处理线程在没有重新启动应用程序的情况下被终止。这导致了非常奇怪的行为。当内存不足时,我希望在进程被终止之前操作系统发出警报。这将允许我释放内存或重新启动我的应用程序。我似乎找不到针对这种情况的广播或通知。

最佳答案

  1. Android 内部有一个持续运行的后台服务“DeviceStorageMonitorService”,它会定期检查系统存储目录。
  2. 此服务维护的内存阈值是分配的内部系统内存的 10%,因此在 P2 的情况下为 861MB,因此内存阈值为 86 MB。 我们可以通过更改文件 DeviceStorageMonitorService.java 内的宏 DEFAULT_THRESHOLD_PERCENTAGE 来更改此设置。
  3. 它检查可用内存的大小与内存阈值,如果小于阈值内存,它将广播通知并粘性广播 Intent ACTION_DEVICE_STORAGE_LOW。 如果内存已满 ACTION_DEVICE_STORAGE_FULL

在接收器中接收此广播 Intent 并处理应用程序。

关于android - Android 上如何确定设备内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803813/

相关文章:

java - 确定android中的屏幕颜色深度

android - 为什么自定义复合 View 中的 EditText 会重复使用在另一个复合 View 实例中输入的文本?

C : printf() not thread safe with flockfile()

java - Android 中的线程

c - 如何跟踪对堆上分配的内存块所做的更改

android - 如何在 Android SDK 示例中的 MapViewCompassDemo 中管理叠加层

安卓 :Using Bixolon thermal printer(SPP-R300) printing alignment

multithreading - 如果操作系统管理的同一进程中的两个线程同时访问同一虚拟地址,那么在两个执行单元中会发生什么?

c++ - 以编程方式在 C++ 中查找最大静态数组大小

java - 找出我可以在内存中创建的最大数组