在不同进程中运行的两个Activity
是否共享内存空间? Android文档中的Here表示它们具有单独的内存空间。
但假设我们必须Activity
: FirstActivity 和 SecondActivity 。在清单中,android:process
属性被分配给 SecondActivity ,以使其在单独的进程上运行。并假设 FirstActivity 有一个名为 A 的公共静态字段。
我使用startActivity()
方法从 FirstActivity 开始 SecondActivity ,我可以访问 FirstActivity.A 字段并读取其值这表明他们共享了内存空间。 (但他们在不同的流程中运行)
编辑以下是代码:
的AndroidManifest.xml
<application>
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:process="another_process">
</activity>
</application>
FirstActivity
public class FirstActivity extends Activity {
public static int A = 11111;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
SecondActivity
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gateway);
Log.i("SecondActivity", "A = " + FirstActivity.A); // here
}
}
发生了什么事?只有当两个Activity
从不同的应用程序运行时,是否有单独的内存空间?为什么可以从 SecondActivity ?
答案 0 :(得分:1)
发生了什么?
你想知道为什么常数是常数。
仅在两个活动从不同的应用程序运行时才有单独的内存空间
没有。您的两个活动在不同的进程中运行。但是,这两个进程具有相同的代码,因为它是相同的应用程序。并且,作为常量的A
实际上是代码的一部分。
为什么可以从SecondActivity访问A变量?
因为它们都有相同的代码。