2013-12-08 28 views
3

我的應用包含許多活動。這些活動中的一個對NFC意圖過濾器以及標準意圖做出響應,但是,此活動將在其自己的任務中啓動,而不是與應用程序執行相同的任務。該應用程序不一定在NFC意圖啓動時運行,但如果是這樣,我希望該活動在同一任務中啓動以確保無縫的用戶體驗。目前,該應用程序表現得好像有2個正在運行。在特定任務中使用NFC開始活動

這裏是我的NFC活動清單:

<activity 
     android:name="name.subname.app.activity.ItemSummaryActivity" 
     android:label="@string/title_activity_item_summary" > 
     <intent-filter> 
      <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 

      <data android:mimeType="application/vnd.name.nfcdemo" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:mimeType="text/plain" /> 
     </intent-filter> 
    </activity> 

是否有可能推出的活動在現有的任務,如果它的存在?

+1

將'android:launchMode =「singleTask」'添加到活動標記,[參考](https://developer.android.com/guide/topics/manifest/activity-element.html#lmode)。或者,您可以向'startActivity()'intent提供'Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT'標誌 – ozbek

+0

您是否在談論主機卡仿真?如果是,那麼你可以刪除'',這樣它就不會從一個單獨的任務開始。然後,您可以在清單中註冊您的服務,以便它不需要從活動中運行。 A將能夠處理它。 –

+0

嘿鞋老鼠謝謝!讓它成爲答案,我會選中它! :) – burntsugar

回答

1

在這裏我看到兩個選項:

1)添加android:launchMode="singleTask"的活動標籤的清單:

<activity 
     android:name="name.subname.app.activity.ItemSummaryActivity" 
     android:label="@string/title_activity_item_summary" 
     android:launchMode="singleTask" > 

"singleTask"

該系統在一個根目錄創建活動新任務並將其意圖傳遞給它。但是,如果活動的一個實例已經存在,則系統通過調用其方法onNewIntent()來將該意向路由到現有實例,而不是創建一個新實例。

2)Supply Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT flag startActivity() intent。但是,如果活動是由NFC觸發的(並且使用此選項不可行),請考慮@NFC guy必須說here