まず、使用例: 2 台の電話で、同じ画面でアプリが開かれています。NFC を使用してビームするときに、必ずしもアクティビティの新しいインスタンスを開くことなく、1 人のユーザーが画面のコンテンツ (データ) を他のユーザーと共有できるようにしたいと考えています。(どちらの Android デバイスも Ice Cream Sandwich を実行しています)
したがって、マニフェストでこのように宣言されたsingleTopアクティビティがあります。
<activity android:name=".activity.MyActivity" android:configChanges="orientation|keyboardHidden" android:launchMode="singleTop">
<intent-filter android:label="@string/activityLabel">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="a.b.c/x.y.z" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/x.y.z"/>
</intent-filter>
</activity>
VIEW
アクションが起動され、アクティビティがすでに最上位にある場合、メソッドonNewIntent()
はアクティビティと同じインスタンスで呼び出されます。
NDEF_DISCOVERED
アクションが起動され、アクティビティが既に最上位にある場合、メソッドonCreate()
はアクティビティの新しいインスタンスで呼び出されます。