Androidでのマルチタスク
Androidでのマルチタスクは、パソコンとは異なる
どちらかと言うと、Webブラウザのタブ
1つのタスクは、
バックスタックというスタックを持ち
その中へ今まで
タブで表示したActivityがスタックされる
このタスクを必要に応じて切り替えることでAndroidはマルチタスクを実現している
また、Activityは起動するごとに
現在アクティブなタスクのバックスタックへスタックされていく
このとき、Activityがどのアプリなのかは重要ではなく
他のアプリのActivityでも、Activityの呼び出し方によっては同じバックスタックへスタックしていく
こうしてスタックされたActivityは、
端末のバックボタンを押すことで
取り出すことができる
そのときに表示されていたActivityは破棄される
次に、タスクの切り替え
タスクの切り替えは、Homeボタンや
マルチタスクボタンを押したとき
ホーム画面からアプリアイコンをタップしたときに行われる
このとき表示していたActivityが属するタスクは休眠状態になり
新たに表示されるActivityの属するタスクが活動状態になる
このように、ユーザーの操作で必要になったときにタスクが切り替えられる
そして、休眠状態のタスクは
時間が経過すると
保持する必要がないとOSが判断して
終了させられる
タスクは、Activityが属するアプリに関係なく動作する
このため、1つのアプリに属するActivityが複数のタスクに存在することもある
このとき、タスクを越えて
1つのアプリでデータや処理を共有したり
タスクにとらわれない処理を実現する手段として、Serviceがある
Serviceは、タスクに属さずアプリに属する形になり
異なるタスク間に属するActivityのデータや処理の共有ができる