【android】LaunchModeについて

はじめに

Androidのアプリを開発していて、Activityの起動方法(Launch Mode)についてあまり理解していなかったので記事にしたいと思います。

Launch Modeとは

Launch Modeは、Activityを起動させる際の動作を指定したものになります。
デフォルトでは、startActivity()でActivityを新しく起動させるとタスクで表示されているActivityの上に新しくActivityが積み上げられる動作になります。

Launch Modeは、AndroidManifest.xmlの<activiy android: launchMode=..>で指定するか、Intentで別のActivityを開始するときにIntent.flags =...とフラグを設定してあげることで指定することができます。

launch Modeには以下のモードがあります。
・standard
・singleTop
・singleTask
・singleInstance
・singleInstancePerTask

今回は開発の中で使った、SingleTaskSingleInstanceについて書いていきたいと思います。

SingleTask

起動したActivityが、端末(スマホなど)に1つしか存在しないようになります。(複数のタスク内で同じActivityが起動しなくなる。)
最初に起動していたActivityAと同じActivityAを別タスクで起動しようとすると、最初のActivityAが再表示されます。(onNewIntent()が動く)
このとき、intentをインスタンスに渡します。(アプリ間連携をする際は、onNewIntent()内で処理をしないと行けない※未確認)

※onNewIntent()
Activity起動時に、onCreate()が呼ばれない場合に呼ばれます。呼び出したIntentが引数として渡されます。

SingleInstance

SingleInstanceのモードで起動したActivityは、1タスク1Activityになります。
1タスクの中には、他のActivityが存在しません。Activityは端末内で1つになります。

おわりに

開発で使用したLaunchModeについて書きました。
Android開発は、Webアプリ開発と結構違うところがあってハマることが多いです。。
なので、もう少し詳しく勉強していきたいなと思っています!


いいなと思ったら応援しよう!