在真实的安卓设备上模拟低内存情况

4
我在Android KitKat 4.4.2上使用应用程序小部件遇到了问题,操作系统会移除我的后台运行服务,即使它处于粘性模式下也不会重新启动。现在我找到了一个技巧,使用onTaskRemoved在低内存情况下重新启动我的服务。但是问题是如何在我的设备上模拟低内存条件,而不是在模拟器上?

你可以尝试加载一个大的空Double对象数组。不断向列表中添加对象,直到内存耗尽。 - Ricardo
人们总是在SO上发布关于处理位图时内存不足的问题。也许您可以使用相机拍摄一些照片并在应用程序中加载它们。或者只需从互联网上下载一些照片。 - Rick Falck
@Ricardo 我测试了这个方法,Android内存管理器将这种应用程序发送到缓存,因为它不是“活动的”! - AVEbrahimi
@AVEbrahimi也许如果您获取唤醒锁,它可以工作? - Ricardo
1个回答

0

我认为你可以使用本地C代码来实现。以下是我的做法:

  1. 编写一个C代码,分配一个大缓冲区,睡眠若干秒钟,在缓冲区上计算校验和,然后退出。
  2. 在Linux机器上使用“-static”编译标志编译程序。Android和Linux是二进制兼容的,但您需要将libc嵌入到二进制文件中,以消除潜在问题。
  3. 使用adb将二进制文件复制到设备上。
  4. 运行二进制文件。

此时,您拥有一个使用内存量等于您分配的缓冲区大小的本地进程。即使您在设备上执行其他任务,我认为此进程也不会被置于睡眠状态,因此其内存使用情况将模拟“低内存”情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接