Android 中的静态变量真的是 "global"(系统范围)吗?

Are static variable truly "global" (system-wide) in Android?

一开始的快速说明以避免错误重复:这里有很多关于静态变量何时被清除以及它们存在多长时间的问题。这不是我要问的。

如果我在 PC 上的程序中有一个静态变量,并且我启动了该程序的两个不同副本,那么每个副本通常会 运行 在自己的沙箱中,并为其静态变量提供自己的私有值.因此,它们不是系统范围的全局(不确定这里的术语是否合适)。

在 Android 中是否存在我可以拥有多个 "instances"(松散使用的词)静态变量的情况?我认为不可能在不同的沙箱中并行拥有 Activity 运行ning 的多个副本(尽管我不确定这一点),但是 ConentProviders、IntentServices 或任何其他class Android 可能会从潜在的其他进程中随机实例化?

或者,换句话说,如果我有一个带有静态变量的 class,我是否可以保证同一设备上同时存在的 class 的每个实例都可以访问完全相同的静态变量值?

对于Android,我认为静态变量不是系统范围的。它仅在应用程序实例中可用。所以假设 Activity A 实例化一个静态变量, Activity B 将能够使用静态变量。 ActivityA和B属于同一个应用。只要应用程序没有关闭,静态变量就应该保持实例化状态。但是,只要应用程序关闭,静态变量就会被杀死,需要重新实例化。请注意,我使用了术语 application 而不是 activity.

对于 ContentProvider,Android 通常会为该应用程序创建的所有数据生成一个目录。

同一进程中的所有 类 运行ing 都可以访问静态字段。如果 Service、Application、BroadcastReceiver、ContentProvider 或 Activity 在单独的进程中 运行ning 那么它将有不同的内存 space,因此不会看到来自其他进程的静态字段.您可以通过在 AndroidManisfest 中指定它来强制组件在另一个进程上 运行(例如 android:process="string" http://developer.android.com/guide/topics/manifest/receiver-element.html