【问题标题】:Running each instance of an Activity in its own process?在自己的进程中运行 Activity 的每个实例?
【发布时间】:2011-11-10 16:00:23
【问题描述】:

我使用 NDK 在 Android 上运行大量第三方本机代码。此代码包含全局变量,因此每个进程仅支持单个会话。 (除非 Android 有某种神奇的方法可以将共享库的多个实例加载到同一个进程中。)

我必须能够同时运行多个活动。这意味着每个 Activity 必须在不同的进程中运行。有谁知道我可以这样做吗?

请注意,进程关联在这里没有帮助,这是否允许我指定单个命名进程,单个 Activity 类的所有实例都在其中运行。我想要的是让一个 Activity 类的多个实例,每个实例都在自己的进程中运行。

我在 Gingerbread(或以上);我愿意考虑任何犯规的黑客来完成这项工作......

(另外:冒着听起来暴躁的风险,请不要向我解释为什么这是一个坏主意,我应该做点别的。告诉我我的外部要求是错误的帮助我满足外部要求...)

【问题讨论】:

  • “这意味着每个 Activity 必须在不同的进程中运行”——不,这意味着它们都应该与提供对库的访问的公共组件(例如,服务)对话。 “请不要向我解释为什么这是一个坏主意,我应该做点别的事情”——强硬。即使你能做到这一点(我真诚地怀疑),你也会消耗更多的内存,而你的用户不会喜欢。

标签: android process android-activity native-activity


【解决方案1】:

对于您希望在不同进程中启动的活动,您必须在清单文件中同时设置 android:taskAffinity 和 android:process。

【讨论】:

  • 正如我解释的那样,这只允许我为给定活动的所有实例指定一个流程。我想在单独的进程中运行活动的每个实例。
【解决方案2】:

这个怎么样

android:multiprocess = true

检查文档。这应该可以。

【讨论】:

  • 谢谢,但这不完全一样!这允许我的活动在启动它的活动过程中运行。这意味着如果第三方应用程序在同一个进程中启动我的活动两次,我最终会在该进程中运行我的活动的两个实例......这是我不能允许的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多