「Androidを支える技術<II>」の3章を読みました。

 

Androidは通常2次記憶がフラッシュメモリなので書き込みが遅く書き込み回数にも制限があるためスワップがない。そのため通常のLinuxよりもメモリ不足に陥りやすい。

 

Linuxはメモリに比較的余裕がある時にメモリの空きを作るためにファイルシステム独自のディスクキャッシュの開放を行うドライバを登録できるがここにlowmemorykillerを用いる。さらにメモリが不足する異常事態でメモリの空きを作るOOM Killerにおいて重要度の低いプロセスから削除されるようにActivityManagerServiceがlmkdに依頼してスコアを管理する。このスコアはlowmemorykillerでも共通に使用する。

 

Androidはどの位普通のLinuxと違うのか疑問に思っていたので大分すっきりしました。

 

「Androidを支える技術<II>」の2章を読みました。

 

Androidではアプリ1つ1つにUnix系OSのuidを割り振っていること、それらを集めた/etc/passwdに相当する/data/system/packages.xmlを持つこと、packages.xmlにはapkのパスが含まれており、Android起動時にpackages.xmlから全アプリのapk→そのAndroidManifest.xml→そのintent-filterを取得しオンメモリに保持しインテント解決に使用すること等が書かれていました。

 

アプリを1つインストールすることをLinuxでユーザーを1人登録することに対応させ、Linuxのセキュリティ機能を活用してアプリを保護しているのは面白いアイデアだと思いました。

 

アプリが作ったファイルを単にAndroid端末をUSBでパソコンにつないだだけではパソコン側からアクセスできないのも、このような仕組みならなるほどと思えますね。

 

「Androidを支える技術<II>」の1章を読みました。

 

1章はイントロ的な内容で、UIスレッドとHandler等<I>とかぶる部分もありました。2章からが本番でこの本は殆どがActivityの説明になっています。

 

以前この本の出版記念の講演会に行きましたが<II>の話ばかりで、著者が本当に書きたかったのは<II>の方であり、その前提知識として<I>も書いたような印象を受けました。

 

なんでそれほどまでActivityに入れ込んでいるのか不思議でしたが、Webアプリと違ってモバイルアプリは画面が狭いため画面遷移をどう扱うかが重要であると考えているからみたいです。

 

この本は色々と動機というか気持ちというか、そういうものが感じ取れるので読んでいて面白いです。