6

http://developer.android.com/guide/components/tasks-and-back-stack.htmlを読み、のドキュメントを調べましたがFLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、Google の従業員がなぜこれを含めることにしたのかまだわかりません共有に関する彼らのブログ投稿でそれを。

http://android-developers.blogspot.com/2012/02/share-with-intents.html

これがまさに彼らのコードスニペットです:

Intent intent=new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

// Add data to the intent, the receiving app will decide what to do with it.
intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”);
intent.putExtra(Intent.EXTRA_TEXT, “Body of the message, woot!”);

ドキュメントには次のように記載されています。

If set, this marks a point in the task's activity stack that should be cleared when the task is reset...

私はまだこのフラグについて非常に確信が持てません。それを私の share() メソッドに含める理由を思いつくことができるかどうかはわかりませんが、Google がブログ投稿でそれを使用した場合、Google はこれが機能するシナリオを知っていると確信しています。前もって感謝します。

4

2 に答える 2

9

この記事では、最初のコード サンプルで説明しています。

このフラグは、呼び出されたアプリをアクティビティ スタックからクリアするため、ユーザーは次にこのアプリケーションが再起動されたときに予期された場所に到着します。

フラグを省略した場合、(ホーム画面から、最近の履歴などから) アプリに戻ったときに、Activity自分の代わりに共有ターゲット (メッセージング/メール/IM アプリ) が表示されます。試してみると、違いがわかります。

于 2014-01-20T11:35:35.337 に答える
5

ここに画像の説明を入力

このフラグは、タスクがリセットされたときに、呼び出されたアクティビティとその上に置かれたすべてのアクティビティをクリア (スタックから削除) するようにマークします。このリセットは、FLAG_ACTIVITY_RESET_TASK_IF_NEEDED を使用してタスクがフォアグラウンドに移動するとすぐに実行されます。FLAG_ACTIVITY_RESET_TASK_IF_NEEDED は、ユーザーがホーム画面、メイン メニュー、または最近開始したアクティビティのリストからタスクを再開するときに常にシステムによって設定されます。

これを使用して、タスクがバックグラウンドに送信されると、開始されたすべてのアクティビティが「忘れられる」タスク スタック内のポイントを定義できます。

詳細:こちらをご覧ください

于 2015-07-06T10:24:50.497 に答える