我正试图理解这个android:process属性.参考说:
如果分配给此属性的名称以冒号(':')开头,则在需要时会创建一个专用于应用程序的新进程.如果进程名称以小写字符开头,则会创建该名称的全局进程.可以与其他应用程序共享全局进程,从而减少资源使用.
如果名称不以冒号开头,是否会创建进程?如果它以大写字母开头怎么办?如果我混合这两个规则会发生什么?
我需要在同一个进程中运行两个包中的两个组件以节省资源(并避免在应用程序管理器中列出两个"正在运行的应用程序").我的流程名称应该是什么?我需要全球流程吗?
编辑:
我尝试了一个简单的小写名称(第一个包的名称),似乎它的工作就像我想要的那样.我仍然认为我没有得到规则.
如果我混合这两个规则会发生什么?
那是不可能的.冒号不是大写字母.
我需要在同一个进程中运行两个包中的两个组件以节省资源(并避免在应用程序管理器中列出两个"正在运行的应用程序").
这真的不是一个好主意.将它们放在同一个包中,或让它们独立运行.
你不仅要乱搞android:process,还要乱搞android:sharedUserId.这些都不是普通SDK开发人员使用的,特别是android:sharedUserId.事实上,如果您已经分发了应用程序,除非您愿意打破所有现有用户的应用程序,否则您将无法使用android:sharedUserId,因为您将无法再访问原始数据,因为它将归您所有其他一些用户帐户.
此外,除非您有相反的证据,否则我不会认为这会以某种方式"避免在应用管理器中列出两个'正在运行的应用'".
现在,我全力以赴提高效率,因此为grins创建额外的流程(例如,误导性建议使"远程服务"在自定义流程中运行)是一个坏主意.如果您为一家设备制造商或拥有20多名Android开发人员的公司工作,并且您想要解决这个问题,那么您将需要找到在AOSP中使用它的位置并对信息进行反向工程你寻求,因为这些东西严重缺乏记录.即使在那里,我也没有看到它在多个软件包之间使用,除了android.process.acore和之外com.android.phone,它们都是严重的低级进程,并且不是典型的非固件应用程序.
因此,我真的建议你单独留下这些东西.