構文:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale",
                                 "uiMode", "orientation", "density",
                                 "screenSize", "smallestScreenSize"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    . . .
</activity>
上位の要素:
<application>
含めることのできる要素:
<intent-filter>
<meta-data>
<layout>
説明:
アプリのビジュアル ユーザー インターフェースの一部を実装するアクティビティ(Activity サブクラス)を宣言します。アクティビティはすべて、マニフェスト ファイルの <activity> 要素で表す必要があります。宣言されていないものはシステムで確認できず、実行されることはありません。
属性:
android:allowEmbedded
別のアクティビティの、埋め込まれた子としてアクティビティを起動できることを示します。特に、別のアクティビティが所有する Display などのコンテナに子が存在する場合です。たとえば、Wear のカスタム通知に使用されるアクティビティは、Wear が別のプロセスに存在するコンテキスト ストリームでアクティビティを表示できるように、これを宣言する必要があります。

この属性のデフォルト値は false です。

android:allowTaskReparenting
アクティビティに関して、あるタスクによってアクティビティが起動した後、アフィニティのあるタスクが次に前面に移行してきたときに、アクティビティを起動したタスクからそのタスクに移動できるかどうかを指定します。移動できる場合は「true」、起動したタスクに残る必要がある場合は「false」に設定します。

この属性が設定されていない場合、<application> 要素の対応する allowTaskReparenting 属性によって設定された値がアクティビティに適用されます。デフォルト値は「false」です。

通常、アクティビティが起動すると、そのアクティビティを起動したアクティビティのタスクに関連付けられ、存続期間を通してそのまま残ります。この属性を使用すると、現在のタスクが表示されなくなったとき、強制的に親をアフィニティのあるタスクに変更できます。通常は、アプリのアクティビティを、そのアプリに関連するメインタスクに移動させるために使用します。

たとえば、メール メッセージにウェブページへのリンクが含まれている場合、そのリンクをクリックすると、ページを表示できるアクティビティが表示されます。このアクティビティはブラウザアプリによって定義されますが、メールタスクの一部として起動されます。親がブラウザタスクに変更されると、ブラウザが次に前面に出たときに表示され、メールタスクが再び前面に出たときに表示されなくなります。

アクティビティのアフィニティは、taskAffinity 属性で定義します。タスクのアフィニティは、ルート アクティビティのアフィニティを読み取ることで決定されます。したがって、定義上、ルート アクティビティは常に同じアフィニティを持つタスクに含まれます。起動モードが「singleTask」または「singleInstance」であるアクティビティは、タスクのルートにしか配置できないため、親の変更は「standard」または「singleTop」モードに限られます(launchMode 属性もご覧ください)。

android:alwaysRetainTaskState
アクティビティが含まれるタスクの状態が常にシステムによって維持されるかどうかを指定します。維持される場合は「true」、特定の状況でシステムがタスクを初期状態にリセットすることを許可している場合は「false」に設定します。デフォルト値は「false」です。この属性は、タスクのルート アクティビティに対してのみ意味を持ちます。他のアクティビティでは無視されます。

通常、ユーザーがホーム画面からそのタスクを再度選択すると、システムは特定の状況でタスクを消去します(ルート アクティビティより上のスタックからすべてのアクティビティを削除します)。これは一般に、ユーザーが一定時間(30 分間など)タスクにアクセスしなかった場合に行われます。

ただし、この属性が「true」の場合、ユーザーのアクセス方法に関係なく、常に最後の状態でタスクに戻ります。これは、たとえばウェブブラウザのようなアプリで、ユーザーが失いたくない状態(タブを複数開いているなど)が多い場合に役立ちます。

android:autoRemoveFromRecents
この属性を持つアクティビティによって起動されたタスクが、タスクの最後のアクティビティが完了するまで概要画面に残るかどうかを指定します。true の場合、タスクは概要画面から自動的に削除されます。これは呼び出し元の FLAG_ACTIVITY_RETAIN_IN_RECENTS の使用をオーバーライドします。ブール値(「true」または「false」)を指定する必要があります。
android:banner
関連アイテム用の拡張型グラフィカル バナーを実現するドローアブル リソース<activity> タグと併用した場合、特定のアクティビティに対してデフォルトのバナーを提供します。<application> タグと併用した場合、すべてのアクティビティに対してバナーを提供します。

システムはバナーを使用して Android TV のホーム画面にアプリを表示します。バナーが表示されるのはホーム画面に限られるため、バナーを指定する必要があるのは CATEGORY_LEANBACK_LAUNCHER インテントを処理するアクティビティを備えたアプリのみです。

この属性は、画像を含むドローアブル リソースへの参照として設定する必要があります(たとえば、"@drawable/banner")。デフォルト バナーはありません。

詳細については、「TV アプリの作成を開始する」のホーム画面にバナーを配置するセクションをご覧ください。

android:clearTaskOnLaunch
ホーム画面から再起動するたびに、ルート アクティビティを除くすべてのアクティビティがタスクから削除されるかどうかを指定します。タスクが常にルート アクティビティまで縮小される場合は「true」、そうでない場合は「false」を設定します。デフォルト値は「false」です。この属性は、新しいタスクを開始するアクティビティ(ルート アクティビティ)に対してのみ意味を持ちます。タスク内の他のアクティビティでは無視されます。

値が「true」の場合、ユーザーがタスクを再度開始するたびに、タスクでの最後の操作に関係なく、またユーザーが戻るボタンやホームボタンを使用してタスクを離れたかどうかに関係なく、ルート アクティビティに移動します。値が「false」の場合、状況によってはアクティビティからタスクが消去されることがありますが(alwaysRetainTaskState 属性を参照)、常にそうなるわけではありません。

たとえば、あるユーザーがホーム画面からアクティビティ P を起動し、そこからアクティビティ Q に移動したとします。次に、ホームボタンを押してアクティビティ P に戻ります。通常はアクティビティ Q が表示されます(これが P のタスクでの最後の操作であるため)。しかし、P がこのフラグを「true」に設定すると、ユーザーがホーム画面からアクティビティ P を起動したとき、その上にあるアクティビティ(この場合は Q)がすべて削除されます。そのため、タスクに戻ったときユーザーには P だけが表示されます。

この属性と allowTaskReparenting がどちらも「true」である場合、親を変更できるアクティビティは、アフィニティを共有するタスクに移動します。残りのアクティビティは前述のように破棄されます。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED が設定されていない場合、この属性は無視されます。

android:colorMode

対応デバイスでアクティビティを広色域モードで表示するようにリクエストします。広色域モードでは、SRGB 色域以外をウィンドウでレンダリングして、より鮮やかな色を表示できます。デバイスで広色域レンダリングがサポートされていない場合、この属性は機能しません。広色域モードでのレンダリングの詳細については、広色域コンテンツによるグラフィックの強化をご覧ください。

android:configChanges
アクティビティ自体が処理する構成の変更をリストします。実行時に構成の変更が発生すると、デフォルトではアクティビティのシャットダウンと再起動が行われますが、この属性で構成を宣言すると、アクティビティが再起動されなくなります。代わりに、アクティビティは実行されたままとなり、その onConfigurationChanged() メソッドが呼び出されます。

注: この属性の使用は避け、最後の手段としてのみ使用してください。構成の変更による再起動を適切に処理する方法の詳細については、実行時の変更の処理をご覧ください。

次の文字列のいずれか、またはすべてが、この属性の有効な値です。値が複数ある場合は「|」で区切ります(例: locale|navigation|orientation)。

説明
density 表示密度が変更されました。ユーザーが別の表示スケールを指定したか、別のディスプレイがアクティブになっている可能性があります。

API レベル 24 で追加されました

fontScale フォントのスケーリング ファクタが変更されました。ユーザーが新しいグローバル フォントサイズを選択しました。
keyboard キーボードの種類が変更されました。たとえば、ユーザーが外付けキーボードを接続しました。
keyboardHidden キーボードのアクセシビリティが変更されました。たとえば、ユーザーがハードウェア キーボードを開きました。
layoutDirection レイアウト方向が変更されました。たとえば、左から右(LTR)が右から左(RTL)に変更されました。

API レベル 17 で追加されました

locale 言語 / 地域が変更されました。テキストを表示する新しい言語をユーザーが選択しました。
mcc IMSI モバイル カントリー コード(MCC)が変更されました。SIM が検出され、MCC が更新されました。
mnc IMSI モバイル ネットワーク コード(MNC)が変更されました。SIM が検出され、MNC が更新されました。
navigation ナビゲーションの種類(トラックボール / D-pad)が変更されました(これは通常、発生しません)。
orientation 画面の向きが変更されました。ユーザーがデバイスを回転させました。

注: アプリが Android 3.2(API レベル 13)以降をターゲットとしている場合は、"screenSize""screenLayout" の構成も宣言する必要があります。これは、デバイスの画面の向きが縦向きと横向きとの間で切り替えられると、これらも変化する可能性があるためです。

screenLayout 画面レイアウトが変更されました。別のディスプレイがアクティブになっている可能性があります。
screenSize 現在使用可能な画面サイズが変更されました。

これは、現在のアスペクト比に応じて、現在使用可能なサイズが変更されたことを表します。ユーザーが横向きと縦向きを切り替えると変更されます。

API レベル 13 で追加されました

smallestScreenSize 物理画面サイズが変更されました。

これは向きに関係なくサイズが変更されたことを表しているため、外部ディスプレイへの切り替えなど、実際の物理画面サイズが変更された場合にのみ変化します。この構成に対する変更は、smallestWidth 構成の変更に対応しています。

API レベル 13 で追加されました

touchscreen タッチスクリーンが変更されました(これは通常、発生しません)。
uiMode ユーザー インターフェース モードが変更されました。ユーザーがデバイスを卓上ホルダーまたはカーホルダーに置いたか、夜間モードが変更されました。各種 UI モードの詳細については、UiModeManager をご覧ください。

API レベル 8 で追加されました

これらの構成の変更はすべて、アプリに示されるリソース値に影響を与える可能性があります。したがって onConfigurationChanged() が呼び出されると、一般に、変更を正しく処理するためにすべてのリソース(ビュー レイアウト、ドローアブルなど)を再度取得する必要が生じます。

注: マルチウィンドウに関連する構成の変更をすべて処理するには、"screenLayout""smallestScreenSize" を両方使用します。マルチウィンドウは Android 7.0(API レベル 24)以降でサポートされています。

android:directBootAware

アクティビティがダイレクト ブートに対応しているかどうか、つまり、ユーザーがデバイスのロックを解除する前にアクティビティを実行できるかどうかを指定します。

注: ダイレクト ブート中、アプリのアクティビティはデバイス保護ストレージに保存されているデータにのみアクセスできます。

デフォルト値は "false" です。

android:documentLaunchMode
起動されるたびにタスクにアクティビティの新しいインスタンスを追加する方法を指定します。この属性により、ユーザーは同じアプリの複数のドキュメントを概要画面に表示できます。

この属性には 4 つの値があり、ユーザーがアプリでドキュメントを開いたときに次のような効果をもたらします。

説明
intoExisting ベース インテントの ComponentName とデータ URI が起動インテントのものと一致するタスクが検索されます。そのようなタスクが見つかると、システムはタスクを消去し、ルート アクティビティで onNewIntent(android.content.Intent) の呼び出しを受け取って再起動します。タスクが見つからない場合、システムは新しいタスクを作成します。
always すでにドキュメントが開いている場合でも、アクティビティがドキュメント用に新しいタスクを作成します。これは、FLAG_ACTIVITY_NEW_DOCUMENT フラグと FLAG_ACTIVITY_MULTIPLE_TASK フラグを両方設定した場合と同じです。
none アクティビティは、アクティビティ用に新しいタスクを作成しません。これがデフォルト値です。FLAG_ACTIVITY_NEW_TASK が設定されている場合にのみ、新しいタスクが作成されます。概要画面では、アクティビティがデフォルトとして扱われます。つまり、アプリのタスクが 1 つ表示され、ユーザーが最後に呼び出したアクティビティから再開します。
never インテントに FLAG_ACTIVITY_NEW_DOCUMENT が含まれていても、このアクティビティは新しいドキュメントで起動されません。これを設定すると、FLAG_ACTIVITY_NEW_DOCUMENT フラグと FLAG_ACTIVITY_MULTIPLE_TASK フラグのいずれかがアクティビティに設定されている場合、その動作がオーバーライドされます。概要画面にアプリのタスクが 1 つ表示され、ユーザーが最後に呼び出したアクティビティから再開します。

注: none」と「never」以外の値の場合、launchMode="standard" を指定してアクティビティを定義する必要があります。この属性が指定されていない場合、documentLaunchMode="none" が使用されます。

android:enabled
システムがアクティビティをインスタンス化できるかどうかを指定します。インスタンス化できる場合は「"true"」、そうでない場合は「false」に設定します。デフォルト値は「true」です。

<application> 要素には、アクティビティを含むすべてのアプリ コンポーネントに適用される独自の enabled 属性があります。システムがアクティビティをインスタンス化できるようにするには、<application> 属性と <activity> 属性の両方を「true」(両属性のデフォルト値)に設定する必要があります。いずれかが「false」の場合、インスタンス化できません。

android:excludeFromRecents
このアクティビティによって開始されたタスクを、概要画面の最近使用したアプリのリストから除外するかどうかを指定します。つまり、このアクティビティが新しいタスクのルート アクティビティである場合、この属性は、最近使用したアプリのリストにタスクを表示すべきかどうかを決定します。タスクをリストから除外する場合は「true」、リストに含める場合は「false」に設定します。デフォルト値は「false」です。

android:exported
この要素は、他のアプリのコンポーネントでアクティビティを起動できるかどうかを設定します。

  • true」の場合、アクティビティはどのアプリからもアクセスでき、正確なクラス名で起動できます。
  • false」の場合、アクティビティは、同じアプリのコンポーネント、同じユーザー ID を持つアプリ、または特権システム コンポーネントでしか起動できません。これは、インテント フィルタがない場合のデフォルト値です。

アプリ内のアクティビティにインテント フィルタが含まれている場合、この要素を「true」に設定すると、他のアプリで開始できるようになります。たとえば、アクティビティがアプリのメイン アクティビティであり、「android.intent.category.LAUNCHER」という category が含まれているとします。

この要素が「false」に設定され、アプリがアクティビティを開始しようとした場合、システムは ActivityNotFoundException をスローします。

この属性を使用すること以外にも、アクティビティの他のアプリへの公開を制限する方法はあります。アクティビティを呼び出せる外部エンティティを制限する権限を使用することもできます(permission 属性を参照)。

android:finishOnTaskLaunch
ユーザーがタスクを起動し直す(ホーム画面でタスクを選択する)たびに、アクティビティ(ルート アクティビティを除く)の既存のインスタンスをシャットダウン(終了)する必要があるかどうかを指定します。シャットダウンする必要がある場合は「true」、そうでない場合は「false」に設定します。デフォルト値は「false」です。

この属性と allowTaskReparenting の両方が「true」である場合、この属性は他より優先されます。アクティビティのアフィニティは無視されます。アクティビティは親を変更されませんが、破棄されます。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED が設定されていない場合、この属性は無視されます。

android:hardwareAccelerated
このアクティビティに対して、ハードウェア アクセラレーテッド レンダリングを有効にするかどうかを指定します。有効にする場合は「true」、そうでない場合は「false」に設定します。デフォルト値は「false」です。

Android 3.0 以降、一般的な 2D グラフィック処理のパフォーマンスを高めるため、アプリ内でハードウェア アクセラレーテッド OpenGL レンダラを使用できるようになっています。ハードウェア アクセラレーテッド レンダラを有効にすると、Canvas、Paint、Xfermode、ColorFilter、Shader、Camera のほとんどの処理が高速化されます。これにより、フレームワークの OpenGL ライブラリを明示的に利用しないアプリでも、スムーズなアニメーション、スムーズなスクロール、全体的なレスポンスの向上が実現します。ハードウェア アクセラレーションを有効にするために必要なリソースが増えるため、アプリの RAM 使用量が増えます。

必ずしもすべての OpenGL 2D 処理が高速化されるわけではありません。ハードウェア アクセラレーテッド レンダラを有効にする場合は、エラーなくレンダラを使用できるか、必ずアプリをテストしてください。

android:icon
アクティビティを表すアイコン。画面上でアクティビティを表す必要がある場合に、このアイコンが表示されます。たとえば、タスクを開始するアクティビティのアイコンが、ランチャー ウィンドウに表示されます。多くの場合、アイコンにはラベルが伴います(android:label 属性を参照)。

この属性は、画像の定義を含むドローアブル リソースへの参照として設定する必要があります。この属性を設定しなかった場合、アプリ用に指定されているアイコンが代わりに使用されます(<application> 要素の icon 属性を参照)。

アクティビティのアイコンは、この属性と <application> 要素のどちらで設定したかに関係なく、アクティビティのすべてのインテント フィルタのデフォルト アイコンにもなります(<intent-filter> 要素の icon 属性を参照)。

android:immersive
現在のアクティビティの没入モード設定を設定します。このアクティビティに対するアプリのマニフェスト エントリで android:immersive 属性が true に設定されている場合、setImmersive() メソッドを使用して没入モードが実行時に変更されても、ActivityInfo.flags メンバーには常に FLAG_IMMERSIVE ビットが設定されます。
android:label
ユーザーが読むことができる、アクティビティのラベル。アクティビティをユーザーに示す必要があるとき、ラベルが画面に表示されます。多くの場合、アクティビティ アイコンとともに表示されます。

この属性を設定しなかった場合、アプリ用に設定されているラベルが代わりに使用されます(<application> 要素の label 属性を参照)。

アクティビティのラベルは、この属性と <application> 要素のどちらで設定したかに関係なく、アクティビティのすべてのインテント フィルタのデフォルト ラベルにもなります(<intent-filter> 要素の label 属性を参照)。

ラベルは文字列リソースへの参照として設定する必要があります。そうすることで、ユーザー インターフェースの他の文字列と同じようにローカライズできるようになります。ただし、アプリ開発の便宜上、未加工の文字列として設定することもできます。

android:launchMode
アクティビティをどのように起動すべきかについての指示。Intent オブジェクトのアクティビティ フラグ(FLAG_ACTIVITY_* 定数)と連携して、インテントを処理するためにアクティビティが呼び出されたときの動作を決定するモードが 5 つあります。それらを次に示します。

standard
singleTop
singleTask
singleInstance
singleInstancePerTask

デフォルトのモードは「standard」です。

下の表に示すように、モードは 2 つのグループに大別されます。ひとつは「standard」、「singleTop」のアクティビティ、もうひとつは「singleTask」、「singleInstance」、「singleInstancePerTask」のアクティビティです。起動モードが「standard」または「singleTop」のアクティビティは、複数回インスタンス化できます。インスタンスはどのタスクにも属すことができ、アクティビティ タスク内のどこにでも配置できます。通常は、startActivity() を呼び出したタスクで起動されます(ただし、Intent オブジェクトに FLAG_ACTIVITY_NEW_TASK 命令が含まれる場合は別のタスクが選択されます。taskAffinity 属性をご覧ください)。

一方、「singleTask」、「singleInstance」、「singleInstancePerTask」のアクティビティの動作はそれぞれ異なります。「singleInstancePerTask」は常にアクティビティ タスクのルートにあります。さらに、デバイスは「singleInstance」アクティビティのインスタンスを一度に 1 つしか保持できませんが、「singleInstancePerTask」アクティビティは、FLAG_ACTIVITY_MULTIPLE_TASK または FLAG_ACTIVITY_NEW_DOCUMENT が設定されているときに、別々のタスク内で複数回インスタンス化できます。起動モードが「singleTask」のアクティビティは、「singleInstance」と「singleInstancePerTask」の動作を組み合わせたものであり、アクティビティを複数回インスタンス化でき、同じ taskAffinity のタスク内の任意の場所に配置できます。 一方、デバイスは、アクティビティ タスクのルートに「singleTask」アクティビティを配置するためのタスクを 1 つしか保持できません。

standard」モードと「singleTop」モードでは異なる点が 1 つだけあります。「standard」アクティビティに新しいインテントが追加されるたびに、そのインテントに対応するクラスの新しいインスタンスが作成されます。各インスタンスは 1 つのインテントを処理します。同様に、「singleTop」アクティビティの新しいインスタンスも、新しいインテントを処理するために作成されることがあります。ただし、ターゲット タスクのスタックの一番上に、すでにアクティビティの既存のインスタンスがある場合、そのインスタンスは(onNewIntent() 呼び出しで)新しいインテントを受け取ります。新しいインスタンスは作成されません。その他の状況では(たとえば、「singleTop」アクティビティの既存のインスタンスがターゲット タスクにあるが、スタックの一番上にはない場合や、スタックの一番上にあるが、ターゲット タスクにはない場合など)、新しいインスタンスが作成され、スタックにプッシュされます。

同様に、現在のスタック上のアクティビティまで移動した場合、動作は親アクティビティの起動モードによって決まります。親アクティビティの起動モードが singleTop である場合(または up インテントに FLAG_ACTIVITY_CLEAR_TOP が含まれている場合)、親はスタックの一番上に移動し、その状態が保持されます。ナビゲーション インテントは、親アクティビティの onNewIntent() メソッドで受け取られます。親アクティビティの起動モードが standard である場合(および up インテントに FLAG_ACTIVITY_CLEAR_TOP が含まれていない場合)、現在のアクティビティとその親は両方ともスタックからポップされ、親アクティビティの新しいインスタンスが作成されて、ナビゲーション インテントを受け取ります。

singleInstance」モードも、「singleTask」、「singleInstancePerTask」と異なる点が 1 つだけあります。「singleTask」または「singleInstancePerTask」が起動モードのアクティビティは、自らのタスクに他のアクティビティ(必然的に、「standard」アクティビティと「singleTop」アクティビティ)を含めることができます。これに対して「singleInstance」アクティビティは、自らのタスクに他のアクティビティ含めることはできません。そのアクティビティがタスク内の唯一のアクティビティである必要があります。別のアクティビティが起動されると、そのアクティビティは(FLAG_ACTIVITY_NEW_TASK がインテントに含まれていたかのように)別のタスクに割り当てられます。

ユースケース 起動モード 複数インスタンス コメント
ほとんどのアクティビティで通常の起動 standard デフォルト。システムは常にターゲット タスクにアクティビティの新しいインスタンスを作成し、そのインスタンスにインテントを渡します。
singleTop 条件付き アクティビティのインスタンスがターゲット タスクの一番上にすでに存在する場合、システムはアクティビティの新しいインスタンスを作成するのではなく、onNewIntent() メソッドを呼び出して、インテントをそのインスタンスに渡します。
特殊な起動
(一般的な用途には推奨されません)
singleTask 条件付き システムは、新しいタスクのルートにそのアクティビティを作成するか、同じアフィニティを持つ既存のタスクにそのアクティビティを配置します。 アクティビティのインスタンスがすでに存在し、タスクのルートにある場合、システムは新しいインスタンスを作成するのではなく、onNewIntent() メソッドを呼び出して既存のインスタンスにインテントを渡します。
singleInstance × インスタンスを保持しているタスクで他のアクティビティが起動されない点を除き、singleTask" と同じです。アクティビティは常に、そのタスクの唯一のメンバーです。
singleInstancePerTask 条件付き アクティビティは、タスクのルート アクティビティ(タスクを作成した最初のアクティビティ)としてしか実行できないので、このアクティビティのインスタンスは、1 つのタスク内に 1 つしか存在しません。ただし、別々のタスク内ではアクティビティを複数回インスタンス化できます。

上の表に示すように、standard はデフォルト モードであり、ほとんどの種類のアクティビティに適しています。SingleTop も、さまざまなアクティビティでよく使用される便利な起動モードです。他のモード(singleTasksingleInstancesingleInstancePerTask)は、ユーザーにとってなじみのない可能性が高い、他のほとんどのアプリと大きく異なるインタラクション モデルになるため、ほとんどのアプリに適していません

どの起動モードを選択しても、起動時のアクティビティと、戻るボタンを使用して他のアクティビティやタスクから戻るときのアクティビティについて、ユーザビリティを必ずテストしてください。

起動モードと、Intent フラグとのインタラクションの詳細については、タスクとバックスタックのドキュメントをご覧ください。

android:lockTaskMode
デバイスがロックタスク モードで動作しているときに、システムがこのアクティビティをどのように表示するかを決定します。

Android では、ロックタスク モードというキオスクモードのような没入型の方法でタスクを実行できます。システムがロックタスク モードで動作しているとき、デバイス ユーザーは通常、通知を表示すること、許可リストに登録されていないアプリにアクセスすること、ホーム画面に戻ることはできません(Google Home アプリが許可リストに登録されている場合を除きます)。システムがロックタスク モードになっているときは、Device Policy Controller(DPC)によって許可リストに登録されたアプリのみを実行できます。ただし、システムアプリと特権アプリは、許可リストに登録されていなくてもロックタスク モードで実行できます。

値には次のいずれかの R.attr.lockTaskMode 文字列値を指定できます。

説明
"normal" デフォルト値。これがデフォルト値です。タスクはロックタスク モードで起動されませんが、startLockTask() を呼び出すことでロックタスク モードにすることができます。
"never"

タスクはロックタスク モードで起動せず、デバイス ユーザーは概要画面からこれらのタスクを固定できません。

注: このモードは、システムアプリと特権アプリでしか利用できません。この値を指定した非特権アプリは、normal として扱われます。

"if_whitelisted" DPC が DevicePolicyManager.setLockTaskPackages() を使用してこのパッケージを承認する場合、このモードは always と同じです。ただし、最後のロックタスクである場合、アクティビティは終了する前に stopLockTask() を呼び出す必要がある点で異なります。DPC がこのパッケージを承認しない場合、このモードは normal と同じです。
"always"

このアクティビティをルートとするタスクは、常にロックタスク モードで起動します。このタスクの起動時にシステムがすでにロックタスク モードになっていた場合、新しいタスクは現在のタスクの上に起動されます。このモードで起動されたタスクは、finish() を呼び出すことでロックタスク モードを終了できます。

注: このモードは、システムアプリと特権アプリでしか利用できません。この値を指定した非特権アプリは、normal として扱われます。

この属性は API レベル 23 で導入されました。

android:maxRecents
概要画面における、このアクティビティをルートとするタスクの最大数。エントリ数がこの数に達すると、システムは、最も長い間使用されていないインスタンスを概要画面から削除します。有効な値は 1~50(メモリの少ないデバイスでは 25)です。0 は無効です。「50」など、整数値を指定する必要があります。デフォルト値は 16 です。
android:maxAspectRatio
アクティビティがサポートする最大アスペクト比。アプリがアスペクト比の大きいデバイスで実行される場合、システムはアプリを自動的にレターボックス表示し、画面の一部を未使用のままにして、アプリを指定された最大アスペクト比で実行できるようにします。最大アスペクト比は、デバイスの長辺を短辺で割った除算結果を小数の形式で表したものです。たとえば、最大アスペクト比が 7:3 の場合は、この属性の値を 2.33 に設定します。ウェアラブル デバイス以外では、この属性の値を 1.33 以上に設定する必要があります。ウェアラブル デバイスでは、1.0 以上に設定する必要があります。そうしなかった場合、システムは設定値を無視します。

注: アクティビティの resizeableActivity が true に設定されている場合、アクティビティがあらゆるサイズをサポートすることになるため、この属性は無視されます。

この属性の詳細については、画面サポートの制限を宣言する最大アスペクト比を宣言するをご覧ください。

android:multiprocess
アクティビティのインスタンスを、そのインスタンスを起動したコンポーネントのプロセスで起動できるかどうかを指定します。起動できる場合は「true」、そうでない場合は「false」に設定します。デフォルト値は「false」です。

通常、アクティビティの新しいインスタンスは、それを定義したアプリのプロセスで起動されるため、アクティビティのインスタンスはすべて同じプロセスで実行されます。ただし、このフラグを「true」に設定すると、アクティビティのインスタンスを複数のプロセスで実行できるため、どこで使用する場合でも(権限が許す限り)インスタンスを作成できます。これは必要性がほとんどなく、望ましくもありません。

android:name
アクティビティを実装するクラスの名前(Activity のサブクラス)。属性値には完全修飾クラス名(例: com.example.project.ExtracurricularActivity)を指定する必要があります。ただし、短縮形として名前の最初の文字をピリオドにした場合(例: .ExtracurricularActivity)、build.gradle ファイルで指定した名前空間に付加されます。

アプリの公開後にこの名前を変更してはなりませんandroid:exported="false" を設定した場合を除く)。

デフォルト値はありません。名前の指定は必須です。

android:noHistory
ユーザーがアクティビティから移動し、アクティビティが画面に表示されなくなったとき、アクティビティをアクティビティ スタックから削除して終了させるかどうか(finish() メソッドを呼び出すかどうか)を指定します。終了させる場合は「true」、そうでない場合は「false」に設定します。デフォルト値は「false」です。

値が「true」の場合、アクティビティは履歴トレースを残しません。タスクのアクティビティ スタックに残らないため、ユーザーはそのタスクに戻ることができません。この場合、このアクティビティの結果に対して別のアクティビティを開始しても、onActivityResult() が呼び出されることはありません。

この属性は API レベル 3 で導入されました。

android:parentActivityName
アクティビティの論理的な親のクラス名。ここでの名前は、対応する <activity> 要素の android:name 属性に指定したクラス名と一致する必要があります。

システムは、この属性を読み取って、ユーザーがアクションバーの上ボタンを押したときに開始するアクティビティを決定します。また、この情報を使用して、TaskStackBuilder でアクティビティのバックスタックを合成することもできます。

API レベル 4~16 をサポートするために、"android.support.PARENT_ACTIVITY" の値を指定する <meta-data> 要素で親アクティビティを宣言することもできます。次に例を示します。

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

上方ナビゲーションをサポートする親アクティビティの宣言について詳しくは、上方ナビゲーションの提供をご覧ください。

この属性は API レベル 16 で導入されました。

android:persistableMode

デバイスを再起動した後も、アクティビティのインスタンスを、それを含むタスク内で保持する方法を定義します。

タスクのルート アクティビティがこの属性の値を persistRootOnly に設定した場合、ルート アクティビティのみが保持されます。それ以外の場合は、タスクのバックスタックの上位にあるアクティビティが調べられ、この属性の値を persistAcrossReboots に設定したアクティビティがすべて保持されます。

この属性を使用する場合、値を次のいずれかに設定する必要があります。

説明
persistRootOnly デフォルト値。システムが再起動すると、アクティビティ タスクは保持されますが、ルート アクティビティの起動インテントのみが使用されます。

アプリの起動インテントがアプリのルート アクティビティを読み込むとき、アクティビティは PersistableBundle オブジェクトを受け取りません。そのため、デバイスを再起動した後もアプリのルート アクティビティの状態を保持するには、onSaveInstanceState() を使用しないでください。

注: この属性値は、アプリのルート アクティビティに対して設定されている場合にのみ、アプリの動作に影響します。

persistAcrossReboots

このアクティビティの状態は、persistableMode 属性が persistAcrossReboots に設定されたバックスタックより上位の各アクティビティの状態とともに保持されます。アクティビティの persistableMode 属性が persistAcrossReboots に設定されていない場合、またはアクティビティが Intent.FLAG_ACTIVITY_NEW_DOCUMENT フラグを使用して起動された場合、そのアクティビティと、上位のバックスタックのすべてのアクティビティは保持されません。

インテントが、アプリで persistableMode 属性が persistAcrossReboots に設定されているアクティビティを読み込むと、アクティビティはその onCreate() メソッドで PersistableBundle オブジェクトを受け取ります。そのため、persistableMode 属性が persistAcrossReboots に設定されている限り、onSaveInstanceState() を使用してデバイスの再起動後もアクティビティの状態を保持できます。

注: この属性値は、アプリのルート アクティビティ以外のアクティビティに対して設定されている場合でも、アプリの動作に影響します。

persistNever

アクティビティの状態は保持されません。

注: この属性値は、アプリのルート アクティビティに対して設定されている場合にのみ、アプリの動作に影響します。

この属性は API レベル 21 で導入されました。

android:permission
クライアントがアクティビティを起動したり、インテントに応答したりするために必要となる権限の名前。startActivity() または startActivityForResult() の呼び出し元に指定の権限が付与されていない場合、そのインテントはアクティビティに渡されません。

この属性が設定されていない場合、<application> 要素の permission 属性で設定された権限がアクティビティに適用されます。どちらの属性も設定されていない場合、アクティビティは権限によって保護されません。

権限の詳細については、概要の権限セクションと、セキュリティと権限のドキュメントをご覧ください。

android:process
アクティビティが実行されるプロセスの名前。通常、アプリ コンポーネントはすべて、そのアプリ用に作成されたデフォルト プロセス名で実行されます。この属性を使用する必要はありません。ただし、必要に応じて、この属性を使用してデフォルトのプロセス名をオーバーライドし、アプリ コンポーネントを複数のプロセスに分散できます。

この属性に割り当てられた名前がコロン(「:」)で始まる場合、必要に応じてアプリ専用の新しいプロセスが作成され、そのプロセス内でアクティビティが実行されます。プロセス名が小文字で始まる場合、アクティビティはその名前のグローバル プロセス内で実行されます(その権限がある場合)。これにより、異なるアプリのコンポーネント間で 1 つのプロセスを共有して、リソース使用量を削減できます。

<application> 要素の process 属性では、すべてのコンポーネントに対して異なるデフォルトのプロセス名を設定できます。

android:relinquishTaskIdentity
アクティビティがタスクスタック内の上位のアクティビティにタスク ID を譲渡するかどうかを指定します。ルート アクティビティのこの属性が「true」に設定されているタスクでは、ベース インテントがタスク内の次のアクティビティのものに置き換えられます。その次のアクティビティでもこの属性が「true」に設定されている場合は、同じタスクで起動するすべてのアクティビティにベース インテントが生成されます。これは、この属性が「false」に設定されているアクティビティが見つかるまで、各アクティビティに対して継続します。デフォルト値は「false」です。

この属性を「true」に設定すると、アクティビティは ActivityManager.TaskDescription を使用して概要画面のラベル、色、アイコンを変更できるようになります。

resizeableActivity

アプリがマルチ ウィンドウ モードをサポートするかどうかを指定します。この属性は、<activity> 要素でも <application> 要素でも設定できます。

この属性を true に設定すると、ユーザーは、分割画面モードや自由形式モードでアクティビティを起動できるようになります。この属性を false に設定すると、マルチウィンドウ環境について、アプリのテストや最適化ができなくなります。ただし、アクティビティを互換性モードを適用したマルチウィンドウ モードにすることはできます。また、この属性を true に設定しても、マルチウィンドウ モードの他のアプリが画面(ピクチャー イン ピクチャーなど)または他のディスプレイに表示されないとは限りません。したがって、このフラグを設定しても、アプリによる排他的なリソース アクセスは保証されません。

API レベル 24 以降をターゲットとしているアプリで、この属性に値を指定しなかった場合、属性の値はデフォルトで true になります。

API レベル 31 以降をターゲットとしているアプリの場合、この属性による動作は小画面と大画面で異なります。

  • 大画面(画面幅 600 dp 以上): すべてのアプリでマルチウィンドウ モードがサポートされます。この属性は、アプリをサイズ変更できるかどうかを示します(アプリがマルチウィンドウ モードをサポートしているかどうかではありません)。resizeableActivity="false" の場合、ディスプレイの寸法に合わせるために必要なとき、アプリは画面互換性モードになります。
  • 小画面(画面幅 600 dp 未満): resizeableActivity="true" であり、かつアクティビティの最小幅と最小高さがマルチウィンドウ要件の範囲内である場合、アプリはマルチウィンドウ モードをサポートします。resizeableActivity="false" の場合、アクティビティの最小幅と高さに関係なく、アプリはマルチウィンドウ モードをサポートしません。

注: デバイス メーカーは、API レベル 31 の動作をオーバーライドできます。

この属性は API レベル 24 で追加されました。

注: タスクのルート アクティビティ値は、タスク内で起動されるすべての追加アクティビティに適用されます。つまり、タスクのルート アクティビティがサイズ変更可能である場合、システムはタスク内の他のすべてのアクティビティをサイズ変更可能なものとして扱います。ルート アクティビティがサイズ変更不可である場合、タスク内の他のアクティビティはサイズ変更不可です。

android:screenOrientation
デバイス上のアクティビティの表示の向き。アクティビティがマルチウィンドウ モードで実行されている場合、この属性は無視されます。

値には次のいずれかの文字列を指定できます。

unspecified デフォルト値。システムが画面の向きを選択します。使用されるポリシー、つまり特定の状況における選択は、デバイスによって異なる場合があります。
behind アクティビティ スタック内で直下にあるアクティビティと同じ向き。
landscape 横向き(ディスプレイは横長)。
portrait 縦向き(ディスプレイは縦長)
reverseLandscape 通常の横向きとは反対方向の横向き。API レベル 9 で追加されました。
reversePortrait 通常の縦向きとは反対方向の縦向き。API レベル 9 で追加されました。
sensorLandscape 横向き。ただし、デバイス センサーに基づいて通常の横向きか逆の横向きになります。ユーザーがセンサーベースの回転をロックしている場合でも、センサーが使用されます。API レベル 9 で追加されました。
sensorPortrait 縦向き。ただし、デバイス センサーに基づいて通常の縦向きか逆の縦向きになります。ユーザーがセンサーベースの回転をロックしている場合でも、センサーが使用されます。API レベル 9 で追加されました。
userLandscape 横向き。ただし、デバイス センサーやユーザーの設定に基づいて、通常の横向きか逆の横向きになります。API レベル 18 で追加されました。
userPortrait 縦向き。ただし、デバイス センサーやユーザーの設定に基づいて、通常の縦向きか逆の縦向きになります。API レベル 18 で追加されました。
sensor 画面の向きは、デバイスの方向センサーが決定します。画面の向きは、ユーザーがデバイスをどのように保持しているかによって異なります。ユーザーがデバイスを回転させると画面の向きも変化します。しかし、どのデバイスもデフォルトで 4 つあるすべての画面の向きに回転するわけではありません。4 つの画面の向きをすべて許可するには、"fullSensor" を使用します。ユーザーがセンサーベースの回転をロックした場合でも、センサーが使用されます。
fullSensor 画面の向きは、4 つの向きのいずれであるかについて、デバイスの方向センサーが決定します。これは "sensor" と似ていますが、デバイスの通常の動作に関係なく、4 つある画面の向きのいずれかを許可するという点で異なります(たとえば、一部のデバイスは逆の縦向きや逆の横向きを通常は使用しませんが、これで有効になります)。API レベル 9 で追加されました。
nosensor 画面の向きは、物理方向センサーを参照せずに決定されます。センサーは無視されるため、ユーザーがデバイスをどのように動かしたかに応じてディスプレイが回転することはありません。
user ユーザーが現在設定している画面の向き。
fullUser ユーザーがセンサーベースの回転をロックしている場合は、user と同じ動作になります。それ以外の場合は fullSensor と同じ動作になり、4 つある画面の向きのいずれかが許可されます。API レベル 18 で追加されました。
locked 画面の向きを現在の向き(任意)にロックします。API レベル 18 で追加されました。

注: 横向きまたは縦向きの値のいずれかを宣言すると、アクティビティが実行される画面の向きについて厳格な要件が定めらているとみなされます。そのため、宣言した値によって Google Play などのサービスでのフィルタリングが有効になるため、アクティビティに必要な画面の向きをサポートするデバイスでしかアプリを利用できなくなります。たとえば、"landscape""reverseLandscape""sensorLandscape" のいずれかを宣言した場合、横向きをサポートするデバイスでしかアプリを利用できなくなります。ただし、<uses-feature> 要素を使用して、アプリが縦向きまたは横向きを必要とすることを明示的に宣言する必要もあります(例: <uses-feature android:name="android.hardware.screen.portrait"/>)。これは純粋に、Google Play や Google Play をサポートする他のサービスが提供するフィルタリング動作であり、デバイスが特定の画面の向きしかサポートしていない場合にアプリをインストールできるかどうかを、プラットフォーム自体が制御するわけではありません。

android:showForAllUsers

デバイスの現在のユーザーとアクティビティを起動したユーザーが異なる場合にアクティビティを表示するかどうかを指定します。この属性は、リテラル値("true" または "false")に設定することも、ブール値を含むリソースまたはテーマ属性に設定することもできます。

この属性は API レベル 23 で追加されました。

android:stateNotNeeded
状態を保存せずにアクティビティを強制終了して正常に再起動できるかどうかを指定します。以前の状態を参照せずに再起動できる場合は「true」、以前の状態が必要な場合は「false」に設定します。デフォルト値は「false」です。

通常、リソースを節約するためにアクティビティを一時的にシャットダウンする前に、onSaveInstanceState() メソッドが呼び出されます。このメソッドは、アクティビティの現在の状態を Bundle オブジェクトに格納します。その後、アクティビティが再起動したときに onCreate() に渡されます。この属性が「true」に設定されている場合、onSaveInstanceState() は呼び出されず、onCreate() にバンドルではなく null が渡されます。これは、アクティビティが初めて起動したときと同じです。

true」に設定すると、状態が保持されていなくてもアクティビティを再起動できるようになります。たとえば、ホーム画面を表示するアクティビティは、なんらかの理由でクラッシュしても削除されないようにするために、この設定を使用します。

supportsPictureInPicture

アクティビティがピクチャー イン ピクチャー表示をサポートするかどうかを指定します。

この属性は API レベル 24 で追加されました。

android:taskAffinity
アクティビティがアフィニティを持つタスク。同じアフィニティを持つアクティビティは、概念的には同じタスクに属します(ユーザーの視点からは同じ「アプリ」に属します)。タスクのアフィニティは、ルート アクティビティのアフィニティで決定されます。

アフィニティは、アクティビティの親を変更する先のタスク(allowTaskReparenting を参照)と、FLAG_ACTIVITY_NEW_TASK フラグを指定して起動されたときにアクティビティを収容するタスクを決定します。

デフォルトでは、アプリのアクティビティはすべて同じアフィニティを持ちます。この属性を設定することで、別の方法でグループ化したり、異なるアプリで定義されたアクティビティを同じタスク内に配置したりできます。どのタスクについてもアクティビティがアフィニティを持たないことを指定するには、これを空の文字列に設定します。

この属性を設定しなかった場合、アクティビティはアプリ用に設定されているアフィニティを継承します(<application> 要素の taskAffinity 属性を参照)。アプリのデフォルト アフィニティの名前は、build.gradle ファイルで設定されている名前空間です。

android:theme
アクティビティの全体的なテーマを定義するスタイル リソースへの参照を指定します。これにより、アクティビティのコンテキストがこのテーマを使用するように自動的に設定されます(setTheme() を参照)。また、アクティビティが起動する前に(アクティビティの実際の外観によく合うように)「起動」アニメーションが表示されることもあります。

この属性を設定しなかった場合、アクティビティはアプリ用に設定されたテーマ全体を <application> 要素の theme 属性から継承します。その属性も設定しなかった場合は、デフォルトのシステムテーマが使用されます。詳細については、スタイルとテーマのデベロッパー ガイドをご覧ください。

android:uiOptions
アクティビティの UI 用の追加オプションを指定します。

次のいずれかの値を指定する必要があります。

説明
"none"追加 UI オプションなし。これがデフォルトです。
"splitActionBarWhenNarrow"水平方向のスペースに制約がある場合(スマートフォンが縦向きモードの場合など)、画面下部にアプリバー(別名「アクションバー」)を追加して、そのバーにアクション アイテムを表示します。画面上部のアプリバーに少数のアクション アイテムを表示するのではなく、アプリバーを分割して、上部のバーにナビゲーション セクションを表示し、下部のバーにアクション アイテムを表示します。これにより、アクション アイテムだけでなく、上部のナビゲーション要素やタイトル要素にも、適切なスペースが確保されます。メニュー項目は 2 つのバーに分割されません。常に一緒に表示されます。

アプリバーの詳細については、アプリバーの追加をご覧ください。

この属性は API レベル 14 で追加されました。

android:windowSoftInputMode
アクティビティのメイン ウィンドウと、画面上のソフト キーボードを含むウィンドウのインタラクションを指定します。この属性の設定は、次の 2 つに影響します。
  • アクティビティにユーザーの注意が向いたときのソフト キーボードの状態(非表示か表示か)
  • アクティビティのメイン ウィンドウの調整(ソフト キーボード用のスペースを確保するためにサイズを縮小するかどうか、または、ウィンドウの一部がソフト キーボードで覆われたときに現在のフォーカスを表示するためにコンテンツをパンするかどうか)

この設定は、次の表に示す値のいずれか、または、1 つの「state...」値と 1 つの「adjust...」値の組み合わせにする必要があります。どちらかのグループに複数の値(たとえば複数の「state...」値)を設定すると、未定義の結果になります。個々の値は縦棒(|)で区切ります。次に例を示します。

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

ここで設定した値(「stateUnspecified」と「adjustUnspecified」を除く)は、テーマで設定した値をオーバーライドします。

説明
stateUnspecified ソフト キーボードの状態(非表示か表示か)が指定されていません。システムは該当する状態を選択するか、テーマの設定を利用します。

これがソフト キーボードの動作のデフォルト設定です。

stateUnchanged ソフト キーボードは、アクティビティが前面に出たとき、表示か非表示かにかかわらず、最後の状態を維持します。
stateHidden ソフト キーボードは、ユーザーがアクティビティを選択したとき(つまり、ユーザーが別のアクティビティを離れたから戻るのではなく、積極的にアクティビティに移動したとき)、非表示になります。
stateAlwaysHidden アクティビティのメイン ウィンドウに入力フォーカスがある場合、ソフト キーボードは常に非表示になります。
stateVisible ソフト キーボードは、ユーザーがアクティビティを選択したとき(つまり、ユーザーが別のアクティビティを離れたから戻るのではなく、積極的にアクティビティに移動したとき)、表示されます。
stateAlwaysVisible ウィンドウが入力フォーカスを受け取ると、ソフト キーボードが表示されます。
adjustUnspecified ソフト キーボード用のスペースを確保するためにアクティビティのメイン ウィンドウをサイズ変更するかどうか、または現在のフォーカスを画面に表示するためにウィンドウのコンテンツをパンするかどうかが指定されていません。ウィンドウのコンテンツをスクロールできるレイアウト ビューがあるかどうかに応じて、これらのモードのいずれかが自動的に選択されます。そのようなビューがある場合、スクロールによってウィンドウのすべてのコンテンツが小さな領域内に表示されると仮定して、ウィンドウがサイズ変更されます。

これがメイン ウィンドウの動作のデフォルト設定です。

adjustResize アクティビティのメイン ウィンドウは常にサイズ変更され、画面上にソフト キーボード用のスペースが確保されます。
adjustPan アクティビティのメイン ウィンドウはソフト キーボード用のスペースを確保するためにサイズ変更されません。ウィンドウのコンテンツは自動的にパンされるため、キーボードで現在のフォーカスが隠されることがなく、ユーザーは入力している内容を常に確認できます。ユーザーがソフト キーボードを閉じてウィンドウ上の隠れた部分を確認して操作する可能性があるため、これは通常、サイズ変更ほど望ましくはありません。

この属性は API レベル 3 で導入されました。

導入時の API レベル:
API レベル 3 で追加された noHistorywindowSoftInputMode を除くすべての属性で API レベル 1
関連項目:
<application>
<activity-alias>