3

サーバーからのメッセージをリッスンする非同期タスクを開始するアクティビティがあります。ユーザーがホーム ボタンを押すと、アクティビティが一時停止し、非同期タスクがバックグラウンドで実行され続けます。あるメッセージが届いたら活動を再開し、作り直さずに前面に出してほしい。私は以下を試しました。

android:launchMode="singleTop"

intent = new Intent(getBaseContext(), MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

これにより、アクティビティが前面に移動しますが、アクティビティが再開されます。

私も試してみました

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);                   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

しかし、これらのどれも活動を前面に押し出していません。

ホーム画面から再起動するとどうなるかなど、アプリを再開するための正しいフラグは何ですか。

4

1 に答える 1

6

うまくいくと思われる次の解決策を見つけました。それは少し複雑ですが、私が望むことをします。

参照: android.intent.action.USER_PRESENT でタスクを前面に出す

単純に finish(); を呼び出す BringToFront アクティビティを呼び出す次のメソッドを作成しました。

private void bringToFront()
{
   Intent i = new Intent(getBaseContext(), BringToFront.class);
   i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   getBaseContext().startActivity(i);
}

タスクを前面に出すためのより簡単な方法があるべきだと私には思えます。より良い解決策が提案されているかどうかを確認するために、少しの間開いたままにします。

于 2013-09-18T20:14:04.140 に答える