android:进程和进程名称

标签 android process

我试图理解 android:process 属性。 Ref says :

If the name assigned to this attribute begins with a colon (':'), a new process, private to the application, is created when it's needed. If the process name begins with a lowercase character, a global process of that name is created. A global process can be shared with other applications, reducing resource usage.

如果名称不以冒号开头,是否会创建一个进程?如果它以大写字母开头怎么办?如果我混合使用这两个规则会怎样?

我需要让两个包中的两个组件在同一进程中运行以节省资源(并避免在应用程序管理器中列出两个“正在运行的应用程序”)。我的流程名称应该是什么?我需要一个全局流程吗?

编辑:

我尝试使用一个简单的小写名称(第一个包的名称),它似乎像我想要的那样工作。我还是觉得我不明白规则。

最佳答案

And what happens if I mix the two rules?

那是不可能的。冒号不是大写字母。

I need to have two components from two packages run in the same process to save resources (and to avoid having two "running apps" listed in the apps manager).

这真的不是个好主意。将它们放在同一个包中,或者让它们独立运行。

你不仅要搞乱android:process,还要搞乱android:sharedUserId。这些都不适合普通 SDK 开发人员使用,尤其是 android:sharedUserId。事实上,如果您已经分发了您的应用程序,您不能使用 android:sharedUserId 除非您愿意破坏所有现有用户的应用程序,因为您将无法再访问您的原始数据,因为它将归其他用户帐户所有。

此外,除非您有相反的证据,否则我不会假设这会以某种方式“避免在应用程序管理器中列出两个‘正在运行的应用程序’”。

现在,我完全是为了效率,因此为 grins 创建额外的进程(例如,让“远程服务”在自定义进程中运行的错误建议)不是一个好主意。如果你在一家设备制造商或一家拥有 20 多个 Android 开发人员的公司工作,并且你想解决这个问题,你将需要找到它在 AOSP 中使用的地方并对信息进行逆向工程您正在寻找,因为这些东西的记录严重不足。即使在那里,我也没有看到它在多个包之间使用,除了 android.process.acorecom.android.phone,它们是非常低级的进程和不会是典型的非固件应用程序。

因此,我真的建议您不要管这些事情。

关于android:进程和进程名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529846/

相关文章:

python多处理自喂消费者永远锁

java - 使用 Runtime.exec 处理 i/o 流

android - 使用什么样的广播接收器?

java - 位置更新的最佳省电方法

java - Samsung Galaxy 设备内存不足

android - Appcelerator 中的相机权限

linux - 进程如何在 Linux 中找到动态共享库?

linux - 在 Linux 上更快地 fork 大型进程?

android - 如何在 Android 上设置行高 textView

c# - 让 Mono 运行时运行进程