3

アプリケーションのルート アクティビティ用に 2 つのインテント フィルタがあります

<activity
    android:name=".MyActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Dialog" >
    <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.NDEF_DISCOVERED" />
        <data android:mimeType="application/com.example.package" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

1 つのフィルターはランチャー アイコンからアプリケーションを起動するためのもので、もう 1 つはユーザーが NFC タグに触れたときにアクティビティを起動するためのものです。

ユーザーがアプリケーションの任意のアクティビティから HOME ボタンを押したときに、次にランチャー アイコンを押すか、NFC タグに触れたときに、アプリケーションを再開する必要があります (すべてのアプリケーションの場合と同様)。

ユーザーが NFC タグをタップすると、最初のアクティビティが開始されます。その後、彼はさらなる活動に進みます。ホームを押します。NFC タグをもう一度タップすると、最初のアクティビティ (MyActivity) が開始され、以前のスタックがクリアされます。

一方、ユーザーがランチャー アイコンを選択し、別のアクティビティに移動して [ホーム] を押し、ランチャー アイコンをもう一度押すと、MyActivity がスタックの一番上で新しいアクティビティとして開始されます。(現在、スタックには 2 つの MyActivity があります)。

4

1 に答える 1

3

アクティビティの起動方法を定義する必要があります。android:alwaysRetainTaskState="true"アクティビティを常に同じタスクで起動する場合は、次を使用します。android:taskAffinity="your.task.name"

また、アクティビティがどのように起動されるかをさらに制御するために見android:launchMode="singleTop"てください。android:launchMode="singleTask"

于 2012-10-24T11:10:13.207 に答える