【发布时间】:2016-05-22 11:48:01
【问题描述】:
我的一个应用在某些Kitkat Samsung 设备中存在严重的活动娱乐问题。该问题在拍照时出现的频率更高,并且在 RAM 一半的糟糕Jellybean Samsungs 中没有观察到。日志显示内存不足,但没有抛出 OutOfMemoryExceptions。我认为Kitkat 中有更激进的活动关闭政策(否则默认的相机应用程序会泄漏)。
我想知道操作系统是在我的应用程序的内存很高时关闭我的活动,还是在所有应用程序使用的总内存很高时关闭它们。如果操作系统有每个进程的阈值,那么在不同的进程中打开相机可能会有所帮助。
我知道可以使用清单中的process 属性在自己的进程中启动服务。假设Activities 不存在等效属性,如果我在其自己的进程中启动代理服务,然后从该服务启动一个活动,该活动是否也会在该进程中运行?
【问题讨论】:
-
@Onik 好吧,那些段落是背景。也许那里有人对操作系统内存管理有深入的了解,可以帮助我了解正在发生的事情。我已经知道 Lollipop 内存泄漏问题以及 webview 泄漏,但 AFAIK 这些不适用于具有更新 webviews 的 Kitkats。
-
Activity也可以在自己的进程中启动developer.android.com/guide/topics/manifest/…
-
如果您通过 Intent 使用相机,您已经在单独的进程中使用相机。启动的相机应用程序可能由用户选择,它可能很大,将您的进程挤出内存。您的应用应该准备好成为 Android 系统中的好公民,保持退出状态,并在返回 Intent 结果时恢复状态。但是,如果您的用例不能接受这种破坏,您必须在应用程序中实现“自定义相机”。操作这样的相机并不是一项固有的内存密集型任务。
标签: android memory process camera android-lifecycle