20

私はさまざまな種類のフラグの知識を意図的に持っていますが、自分の活動では使用できません。誰か説明してくれませんか

  • どうすればアクティビティを終了できますか?
  • インテント フラグを使用してアクティビティ スタックを操作する方法。
4

3 に答える 3

31

どうすればアクティビティを終了できますか?

アクティビティを終了するには、手動でアクティビティの finish() メソッドを呼び出すか、finish() メソッドを呼び出す [戻る] ボタンを押す必要があります。

次のような Intent フラグを使用して宣言できる Android 起動モードについて質問していると思います。

1) FLAG_ACTIVITY_NEW_TASK - 設定されている場合、このアクティビティは、この履歴スタックの新しいタスクの開始になります。タスク (それを開始したアクティビティから次のタスク アクティビティまで) は、ユーザーが移動できるアクティビティのアトミック グループを定義します。タスクはフォアグラウンドとバックグラウンドに移動できます。特定のタスク内のすべてのアクティビティは、常に同じ順序のままです。

2) FLAG_ACTIVITY_CLEAR_TOP - 設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントがに配信されます(今一番上にある) 古いアクティビティを新しいインテントとして。

3) FLAG_ACTIVITY_SINGLE_TOP - 設定されている場合、履歴スタックの最上位で既に実行されているアクティビティは起動されません。

Intents の詳細については、Android DevelopersのWeb サイトを参照してください。

また、このリンクの例を含む詳細な説明を読むことができます。

フラグを使用してアクティビティ スタックを操作する方法。

バックスタックの操作は、たとえば、アプリケーションの起動後に特定のアクティビティを確認したい場合など、要件によって異なります。バックスタックに保持することもできます。また、呼び出されるスプラッシュ画面などの明確な画面を表示したくない場合他の画面に移動している間に一度終了する必要があります。

于 2013-10-28T04:53:48.863 に答える
13

finish()アクティビティを呼び出して終了することができます。要件に応じて、この時点で使用できるフラグがあります。これがどのように機能するかです:

FLAG_ACTIVITY_CLEAR_TASK- startActivity() に渡されるインテントで設定されている場合、アクティビティが開始される前に、アクティビティに関連付けられている既存のタスクがすべてクリアされます。つまり、古いアクティビティはすべて終了します。

FLAG_ACTIVITY_CLEAR_TOP- startActivity() に渡されるインテントで設定され、起動されるアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが実行されます。閉じられ、このインテントは新しいインテントとして古いアクティビティに配信されます。

FLAG_ACTIVITY_NEW_TASK- startActivity() に渡されるインテントで設定されている場合、このアクティビティは、この履歴スタックの新しいタスクの開始になります。

FLAG_ACTIVITY_SINGLE_TOP - startActivity() に渡されるインテントで設定されている場合、履歴スタックの最上位で既に実行されているアクティビティは起動されません。

次のように使用できます。

Intent i=new Intent(this, Sample.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

さらに明確にするために、このインテントとバックスタックとタスクも確認できます

于 2013-10-28T04:57:58.063 に答える
0

アクティビティを終了したい場合は、そのアクティビティからメソッド finish() を呼び出すことができます。

アクティビティに使用できるさまざまな種類のフラグがあります。

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP

その後、任意のアクティビティ setFlag メソッド パラメータに Intent.FLAG_ACTIVITY_NEW_TASK を使用できます。

詳細: タスクとバック スタックアクティビティ

うまくいけば、それはあなたを助けるかもしれません.

于 2013-10-28T04:42:11.197 に答える