A_应用发布B_应用独立于Android
在B的舱单中,如下所示:A_应用发布B_应用独立于Android,android,android-intent,manifest,Android,Android Intent,Manifest,在B的舱单中,如下所示: <activity android:name="BActivity" > <intent-filter> <action android:name="ACTION_TEST" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity&g
<activity android:name="BActivity" >
<intent-filter>
<action android:name="ACTION_TEST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("package name","package name.BActivity"));
startActivity(intent);
它可以成功启动B_应用程序。但是,当我通过单击B的图标从A启动B和直接启动B时,它们之间的全局变量是相同的。
我想从A启动B,直接启动是2个独立的应用。
我怎么做 当您从A启动活动B时,您可以向B传递一些布尔值,说明它已从A启动。例如,从B启动活动A,如下所示:
Bundle b = new Bundle();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("package name", "package name.BActivity"));
b.putBoolean("fromA", true);
intent.putExtras(b);
startActivity(intent);
在活动B中,然后检查onCreate()
中是否有包,如下所示
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
// Activity launched from Activity A
} else
{
// Actitivity launched from launcher
// clear the global variables
}
}
如果从启动器启动,则可以清除全局变量。但同时启动的2个,全局变量将被清除。什么是同时启动的2个?如果不想清除变量,请不要清除它们。只是当你从启动器启动时不要使用它们,否则就使用它们。一般来说,你不应该依赖Android中的全局变量(即静态)。Android在任何时候都可以选择终止您的进程(例如,如果接到电话)。完成电话呼叫后,Android将在新VM中启动您流程的新实例,您所依赖的静态将被清除。@EJK我同意!正确的方法是将所需的数据存储在SharedReferences中