能否将Activity作为一个新进程启动

11

我有这样一种情况,需要从我的主Activity启动一个活动。但我希望这个新活动作为一个新进程(具有新的进程ID)启动。在Android中是否可以实现这一点?任何帮助都将不胜感激。


但我希望这个新活动作为一个新进程启动(具有新的进程ID)。--为什么?我想不出任何好的理由。据我所知,你所做的一切都是浪费RAM,浪费CPU和浪费电池而毫无益处。 - CommonsWare
为了通过不断启动新进程来使系统超载......有一个众所周知的漏洞,一旦达到PID限制并且ADB尝试重新启动,您就可以获得root访问权限。当它启动时,它以超级用户模式启动。完成活动后,它会尝试将其权限设置为普通用户,但由于已达到PID上限,该进程失败。您只能访问shell和root权限。这可能就是他想要的原因吧 ;) - Bill Mote
1
我不知道 OP 为什么需要它,但我有一个使用案例:我想启动然后关闭一个第三方库,我知道它不能自我清理(它不能在同一进程内安全重启)。能够启动具有新 JVM 和本地库新实例的新进程可能非常重要。 - Logan Pickup
1
除了以上评论无知之外,为什么有人想要特定代码块并不是由你决定的。许多应用程序可以使用单独的应用程序容器。例如,如果您在同一进程空间中运行Web服务器和活动,并且服务器崩溃,则无法提供任何工具和可能会失去关于崩溃本身的关键上下文信息,具体取决于您如何记录数据。能够为可能崩溃的代码生成一个独立的进程是必备功能。无论无知者如何说。 - Hypersoft Systems
1个回答

23

在AndroidManifest.xml文件中为您的Activity添加android:process=":ProcessName"即可。

<activity
     android:name=".YourActivity"
     android:screenOrientation="portrait"
     android:process=":YourProcessName">
     <intent-filter>
          <action android:name="android.intent.action.VIEW" />

          <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
</activity>

在这种情况下,“YourActivity”将在名为“YourProcessName”的其他进程上运行。


你能再详细解释一下吗?我不太了解。 - Andro Selva
它将为该活动设置一个新的流程,与您之前使用的其他流程不同。这样,您可以为活动1拥有流程1,为活动2拥有流程2。 - android developer
1
@AndroSelva 我的主活动正在运行。是否可以将同一活动作为另一个进程启动? - Santosh V M

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