2013-01-17 52 views
0

在B的清單如下:A_app推出B_app獨立於Android

<activity android:name="BActivity" > 
    <intent-filter> 
     <action android:name="ACTION_TEST" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

,有一個全局變量。

在如下A的啓動代碼:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.setComponent(new ComponentName("package name","package name.BActivity")); 
startActivity(intent); 

它可以successly推出B_app。
雖然我從A啓動B並通過單擊B的圖標直接啓動B,但它們之間的全局變量相同。
我想從B推出並直接推出是2個獨立的應用程序。
我該怎麼做?

回答

1

當您從您的leaunch活動B,你可以通過一些布爾對B說,它已經從A.例如推出的B推出的活動爲您如下:

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

+0

但是同時啓動2個,全局變量將會清晰。 – brian

+0

你是什麼意思2同時推出?如果你不想清除變量,請不要清除它們。只是**當您從啓動器啓動時不使用它們,否則使用它們。 – Antrromet

+0

一般而言,您應該*從不*依賴Android中的全局變量(即靜態)。 Android在任何時候都可能選擇殺死您的流程(例如,如果有電話打進來)。完成通話後,Android會在新虛擬機中啓動一個新流程實例,您所依靠的靜態數據將被清除。 – EJK