2

着信があるたびに、着信画面にユーザー情報を表示しようとしています。そのため、受信呼び出しをリッスンするブロードキャストレシーバーがあり、インテントサービスを開始し、その後アクティビティを開始します( Theme Dialog を使用)。

これで、着信があるたびに、アクティビティ ダイアログがポップアップし、意図したとおりに表示されます。

問題: アクティビティ ダイアログが既に画面に表示されているときに着信が発生すると、新しい情報を含む新しいアクティビティ ダイアログが表示されません。インスタンスがあるときはいつでも、Android は新しいインスタンスを作成しないと思います。したがって、私の問題は「アクティビティの複数のインスタンスを作成する」ことのようです。

FLAG_NEW_TASKを使用してインテント サービスからアクティビティを開始していることに注意してください。

4

3 に答える 3

3

Google Doc は次のように述べています。

FLAG_ACTIVITY_NEW_TASK

「このフラグを使用すると、現在開始しているアクティビティに対してタスクが既に実行されている場合、新しいアクティビティは開始されません。代わりに、現在のタスクが最後の状態で画面の前面に表示されます。の。"

したがって、新しい新しいアクティビティを開始したい場合は、このフラグのみを使用するのではなく、目的の結果を得るためにFLAG_ACTIVITY_CLEAR_TASKと共に使用する必要があります。

例えば:

// Sets the Activity to start in a new, empty task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
        Intent.FLAG_ACTIVITY_CLEAR_TASK);

上記の解決策が必要なものではない場合は、 android:launchModeactivity属性を見て、ファイルのタグで目的のオプション (つまり、必要に応じて) を指定してこの属性を宣言しmanifestます。

これで問題が解決することを願っています。

于 2013-01-15T17:08:03.397 に答える
2

ドキュメントによるとフラグ FLAG_ACTIVITY_MULTIPLE_TASK を使用します。

Used in conjunction with FLAG_ACTIVITY_NEW_TASK to disable the behavior of bringing an existing task to the foreground. When set, a new task is always started to host the Activity for the Intent, regardless of whether there is already an existing task running the same thing.

このフラグを FLAG_ACTIVITY_NEW_TASK と共に使用すると、各アクティビティ インスタンスが個別のタスクとして作成されるため、異なるダイアログ ポップアップを表示できます。

于 2013-04-02T12:13:33.167 に答える
2

次のフラグを に追加するだけIntentです。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
            | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
于 2014-12-01T13:45:28.963 に答える