2013-05-28 33 views
0

我只是想使用我的應用程序小部件作爲應用程序的快捷方式,我不想打開一個新的任務。 所以我用FLAG_ACTIVITY_BROUGHT_TO_FRONT標誌是這樣的:從Widget啓動應用程序:沒有影響FLAG_ACTIVITY_BROUGHT_TO_FRONT

 Intent configIntent = new Intent(context, MainActivity.class); 
     configIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
     PendingIntent configPendingIntent = PendingIntent.getActivity(
       context, 0, configIntent, 0); 
     views.setOnClickPendingIntent(R.id.widget, configPendingIntent); 

但不幸的是,每次我點擊一個widget的新活動推出。

我錯過了什麼嗎?

編輯:我也嘗試:FLAG_ACTIVITY_REORDER_TO_FRONT

+0

如果你不希望一個新的任務,那麼你正在尋找FLAG_ACTIVITY_CLEAR_TOP,如果活動是在堆棧中它會收到在'onNewIntent()'和'的onCreate(意圖)'將不會被調用。 – AlexBcn

+0

我嘗試了你的代碼,並且還有一個活動的新實例... –

回答

0

我想盡標籤悲慘地失敗了......

我不得不用android:launchMode="singleInstance",使小部件啓動我的活動在相同的狀態不是用戶離開它。

2

除了我說:

configIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

<activity 
     android:name="com.source.myApp" 
     android:launchMode="singleTop" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

如果已宣佈其推出模式爲「多」(默認值),你有沒有在同一組FLAG_ACTIVITY_SINGLE_TOP意圖,那麼它將被完成並重新創建;對於所有其他啓動模式,或者如果設置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將被傳遞到當前實例的onNewIntent()。

API reference

+0

我嘗試了你的代碼,並且我仍然得到了同一活動的2個不同實例。這個小部件用onCreate ... –

+0

在你的清單中添加'android:launchMode =「singleTop」',如果它不起作用,我會在家看一個項目,因爲我不得不處理類似的情景。 – AlexBcn

+0

我「+'編輯」您的答案,爲親切的幫助,並會嘗試看看,如果singleTop比singleInstance有一些優勢,因爲結果將是相同的 –