0

リストにいくつかのデータを表示するメインアクティビティと、カードからいくつかのデータを読み取るnfc-asynctaskがあります。次の動作を実現したい:

  1. アプリを閉じてカードを携帯電話の近くに置くと、メイン アクティビティと同時に nfc-asynctask が開始されます。asynctask の結果はダイアログに表示されます。
  2. アプリを開いてカードを近づけると、nfc-asynctask が再起動され、結果を示すダイアログのみが開かれます。

私の現在のアプローチは、常にメインアクティビティを開始します。つまり、メイン アクティビティのインスタンスが複数あり、ユーザーが戻るボタンを押すと、ホーム メニューに切り替える代わりに、別のアクティビティ インスタンスが実行されることがあります。

マニフェスト

<activity
    ...
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.nfc.action.TECH_DISCOVERED"/>
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/filter_nfc"/>
</activity>
4

1 に答える 1

1

Android のフォアグラウンド ディスパッチ機能をご覧ください。アプリをフォアグラウンド ディスパッチ用に登録すると、アクティビティはonNewIntent()2 回目の開始ではなく、イベントを受け取ります。

また、TECH_DISCOVERED インテントを別のインテント フィルターに入れることをお勧めします。

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
           android:resource="@xml/filter_nfc" />
于 2013-10-18T16:28:14.317 に答える