2011-07-11 87 views
1

我認爲應用程序管理器在安裝後以錯誤的方式運行我的應用程序。它運行我的應用程序的任務。當我按HOME並按應用程序圖標時,我用我的應用程序運行第二個任務。如何強制應用程序總是在自己的任務中運行?

我測試了它。我做了兩個應用程序App1,App2。 App2有兩個活動A和B.App1以最簡單的方式運行App2。

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

測試1.運行App1。 App1運行App2活動A.活動A運行活動B.按主頁。按App2圖標。你可以看到App2的活動A.(錯誤,我們必須使用App2的任務)

我改變了啓動App2的代碼。

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

測試2.運行App1。 App1運行App2活動A.活動A運行活動B.按主頁。按App2圖標。您可以看到App2的活動B.(確定)

如何更改App2清單並強制App2始終在其自己的任務中運行?

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Screen1" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Screen2"> 
      <intent-filter> 
       <action android:name="org.app2.test.screen2" /> 
       <category android:name="android.intent.category.DEFAULT"></category> 
      </intent-filter> 
    </activity> 

</application> 

回答

1

我檢測應用程序第一次運行的情況,並重新啓動它。

if (first_run) { 
    Log.w(TAG, AppHelper.FIRST_RUN);  

    PendingIntent intent = PendingIntent.getActivity(this.getBaseContext(), 0, (new Intent(getIntent())).addCategory(Intent.CATEGORY_LAUNCHER), Intent.FLAG_ACTIVITY_NEW_TASK); 

    AlarmManager mgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, intent); 
    System.runFinalizersOnExit(true); 
    System.exit(2); 

    return; 
} 
相關問題