以不同的过程打开相机

Mis*_*ith 11 memory camera android process android-lifecycle

我的一个应用程序在某些Kitkat Samsung设备中存在严重的活动娱乐问题.拍照时问题会更频繁地出现,并且在Jellybean Samsung具有一半RAM的蹩脚中没有观察到.日志显示内存不足,但没有OutOfMemoryException抛出s.我认为有更积极的活动关闭政策Kitkat(或者默认的相机应用程序漏洞).

当我的应用程序的内存很高时,我想知道操作系统是否会关闭我的活动,或者当所有应用程序使用的总内存很高时,它会关闭它们.如果操作系统具有每个进程阈值,那么可能在不同的进程中打开相机可能会有所帮助.

我知道可以使用process清单中的属性在自己的进程中启动服务.假设不存在等效属性Activities,如果我在自己的进程中启动了代理服务,然后从该服务启动了一个活动,那么活动是否也会在此过程中运行?

Oni*_*nik 2

所描述的行为完全符合应用程序基础文档,从中可以清楚地看出“在不同的进程中打开相机”不会对您有帮助,因为这是默认情况下已经发生的情况:

当系统启动一个组件时,它会启动该应用程序的进程(如果它尚未运行)并实例化该组件所需的类。例如,如果您的应用程序在相机应用程序中启动捕获照片的 Activity,则该活动将在属于相机应用程序的进程中运行,而不是在您的应用程序的进程中运行。

因此,当相机应用程序进入前台时,您的应用程序将进入后台,这使得它成为根据进程和应用程序生命周期内存不足时被系统杀死的候选者之一。您正在目睹正常操作系统的行为。RAM 总量不是关键点。前台进程可用的可用内存量。

话虽如此,你的问题的答案是否定的。任何在Activity最初通过清单文件声明的应用程序(进程)内启动和运行,无论启动请求来自哪个进程。

命令

adb shell ps | grep 'app_name'
Run Code Online (Sandbox Code Playgroud)

会告诉您您的相机应用程序正在哪些进程上运行。

虽然两个应用程序可以在同一进程中运行,但必要的先决条件是应用程序的签名相同......来自应用程序基础知识

可以安排两个应用程序共享相同的 Linux 用户 ID...具有相同用户 ID 的应用程序还可以安排在相同的 Linux 进程中运行并共享相同的 VM(应用程序还必须使用相同的证书进行签名) 。