A_应用发布B_应用独立于Android

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

在B的舱单中,如下所示:

<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中