オルタナティブ・ブログ > 路の上で >

日頃考えていることをぽちぽち書きます。

モバイルOSのマルチタスク

»

iOSはバッテリーやその他資源の観点からマルチタスクが厳しく制限されていますが、他が気になってAndroidとWindows Phoneを調べてみました。これらはカーネルは当然マルチタスクを備えていますが、モバイルの制約を意識して、カーネル外部で制御していることが特徴。

iOS
iOS 7の新しいAPIを使えば、ユーザーの使用状況から自動的にバッテリーを不必要に消費せずにコンテンツをダウンロードしたり、更新したりできるそうです。仕組みが不思議ですが、詳しいことはiOS 7の正式公開後に。
iOS 6は、iOSの開発ドキュメント「iOS App Programing Guide」のApp States and Multitaskingで詳しく説明されていますが、iOS 4以降、以下の特定目的のためにバックグラウンド処理ができるようになりました。最近のAppleらしい、厳格に管理する方向です。

  • オーディオの再生
  • ナビゲーション
  • VoIP
  • 新しいコンテンツを取得するNewsstand apps
  • 外部アクセサリーから定期的に情報を受ける

Android
Servicesによると、バックグラウンドで長期間に渡ってユーザーインターフェース無しに処理する仕組みがあるそうです。
一方、Processes and Threadsに寄ると、iOSのような制約は無さそうです。

Windows Phone
How to run location-tracking apps in the background for Windows Phone 8等のドキュメントによると、7.5 (内部的には7.1)からバックグラウンドで限定的な逐次処理ができるようになり、8.0でa location-tracking app、つまりナビ等を実現できるようになったとのこと。iOSと同じように厳しい。

総括すると、iOSとWindows Phoneは現状にあわせて厳格に管理し、Androidはより理想的に考えて細かな管理はしない、と言った所でしょう。Androidは細かなことを考えていないだけかもしれませんが、ハードウェアは別組織の提供で緩い管理だから妥当な考え方です。一方、iOSは毎年バージョンアップすることから、ハードウェアの現状にあわせて逐次的に更新して行くのも妥当な考え方です。Windows Phoneも同じ考えでしょうが、将来構想が見えにくいのが課題です。

Comment(0)