2

次のように、ブロードキャストレシーバーのメソッド内からアクティビティを再開しようとしてonReceive()います。

Intent i = new Intent(context, TimerSet.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

ただし、アクティビティ(TimerSet.class)は再開されるのではなく、再作成されます。この問題に対して私が見つけた唯一の推奨される解決策は使用することでしたFLAG_ACTIVITY_REORDER_TO_FRONTが、私はすでにそれを使用しています。

また、使用するIntent.FLAG_ACTIVITY_NEW_TASKことは私のユースケースに適合しませんが、それを提供しない場合、次の例外が発生します。

android:util.AndroidRuntimeException: Calling startActivity() from outside of an 
Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you 
want?
4

2 に答える 2

1

FLAG_ACTIVITY_NEW_TASKフラグを削除します。また、このフラグ->FLAG_ACTIVITY_CLEAR_TOPを追加します。これにより、すでに存在する場合、新しいアクティビティが作成されなくなります。

于 2013-02-18T06:15:51.757 に答える