投稿元:
レビューを見る
職場の大先輩におすすめされ、しかも貸してもらえた。
ActivityというAndroidのアプリケーション構成要素を軸に、スマホというモバイル家電でいかにマルチタスクシステムを矛盾なく構築したか、が書かれている。
書店でAndroidコーナーに行くとアプリケーション開発手法ばかりが取り上げられている中で、純粋にAndroid内部について書かれた(しかも日本人原著の!)貴重な本。
Androidアプリ開発経験と、Linuxの知識がある人をメインの想定読者としているが、読み進める上で最低限必要なことはちゃんと説明してくれている。
コラムでは、著者がずっと関わってきた携帯ソフト開発業界の歴史などが書かれていて、それもそれだけで本にできるんじゃないかというぐらい面白い。
- メモリ不足対策
- スマホでは、ユーザがプロセスを明示的に終了することを期待できない上に、フラッシュストレージのデバイス特性により、スワップ領域を用意することもできないため、メモリが不足する状態が普通に発生する。
- そのため、メモリが不足したとき、Androidシステム上優先度の低いプロセスを自動で終了させる仕組みが必要となる。(例えば、裏に回ってしばらく使われていないActivityなど)
- Androidでは自動で終了させる仕組みは二段構えとなっており、少しメモリが不足してきたタイミングでAndroid独自ドライバによって行われるものと、かなりメモリが不足してきたタイミングでLinuxの提供するOOM killerによって行われるものとがある。
- どちらもoom_scoreに準じてどのプロセスを終了するかが選択される。
- lmkd : oom_scoreを調整するデーモンプロセス
- lowmemorykillerドライバ:linux kernelの提供するshrink_slab()を契機に、oom_scoreに準じてActivityを終了させる、Linux Kernel module。
- Activityの管理
- SystemServerプロセスのActivityManagerServiceクラスがActivityStackを管理する。
- 状態の変化に応じて、Activityにメッセージを送ったり、終了している場合はプロセスの再生成を行う。
- ActivityStackはActivityの再現に必要なすべての情報をもつActivityRecordを管理している。
- Activityの起動
- ZygoteサービスにActivityの起動依頼をしたら、zygoteサービスがforkし、setuidしたりlisten用のsocketを準備してから、指定したクラスのmainメソッドを呼び出す。
- 工夫
- 例外でスタックを巻き戻してから呼び出すことで、スタックを節約している(p.166)
- Java Runtimeを使うプロセスは(SystemServiceも)、app_processからforkすることで、実メモリを共有し、節約している
投稿元:
レビューを見る
Android端末の内部でOSがどのような処理を行っているのかしっかりと理解してアプリ開発に役立てたい人におすすめ。筆者はガラケー時代から携帯端末のOS開発に携わった技術者とのことで、ITRON, SymbianなどのOSの話からWindows Mobileへの期待感、iPhone登場時のショックとその後のAndroidの成長などについて、本文とは別枠で書かれたコラムがとても面白かった。
投稿元:
レビューを見る
Android アプリは、開発チームのリーダーとして関わったり、 Tangoデバイス で Google Tango の実力の評価用のアプリを作った(ほぼ NDK で C++)くらいなので Activity や Intent について自分でがっつりと向き合ったことがなかったのでせいぜい画面の制御単位でしょ、くらいにしか認識してなかったのですが、こういう裏側の仕組みが 適切な粒度で説明されていると その思想がわかって良かったです。
想定読者にも書いてあるけど、まったくの初心者には厳しい本ながら、なんらかの核になる背景がある人だったらいい感じに読み進められると思います。(そして「物足りない」と思う部分はバックボーン知識によって変わってきそう)
作者の 「ここは端折る」「ここは詳述する」というメリハリの感覚が 良い加減でした。
投稿元:
レビューを見る
Androidを支える技術(2)真のマルチタスクに挑んだモバイルOSの心臓部(WEB+DB PRESS PLUS)
著作者:有野和真
2009年フリーランスになり機械学習関連のプロジェクトやスパコンの独自GPGPU開発に携わる傍らAndroidのお絵かきアプリ「LayenPaint」を共同開発。
タイムライン
https://booklog.jp/timeline/users/collabo39698