4

インテント フィルターを指定して特定の種類のファイルを処理する singleTask-mode アクティビティを使用しています。そのようなファイルのインテントをそれぞれ 1 回だけ処理する必要があります。問題は、 onNewIntent() が呼び出されるのは、タスクが既に実行されている場合のみであり、 onCreate() からのインテントも処理する必要があります。残念ながら、onCreate() はさまざまな理由 (画面の回転など) で呼び出され、getIntent() によって返されるインテントは複数の onCreate() で同じものになる場合があります。もちろん、醜いハックを使用してこれを回避することは可能ですが、エレガントな解決策は何だろうと思っていました。これまでのところ、私が思いついた最善の解決策は、インテントを処理した後に毎回 setIntent(new Intent(Intent.ACTION_MAIN)) することです。

ありがとう!

4

3 に答える 3

0

問題が発生したかどうかはわかりませんが、インテントを呼び出して新しいアクティビティを開始すると、finish()を呼び出した直後になります。残しているアクティビティを終了します。これにより、最後のアクティビティが終了し、複数のアクティビティが同時に実行されるのを防ぐことができます。

また、アクティビティを起動する方法として画面の回転を使用している場合は、「If and Else」ステートメントを使用していくつかのチェックを設定することにより、何度も開始したくないものをいつでも制御できます。

于 2011-06-30T06:30:22.647 に答える
0

remove singleTask は問題を解決します。
remove singleTask のアクティビティを呼び出します。次のように置き換えることができます。

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
              | Intent.FLAG_ACTIVITY_SINGLE_TOP);
于 2011-12-13T12:49:46.000 に答える
-1

処理後の setIntent(null) はどうですか?

于 2011-06-29T23:01:10.170 に答える