1
/
5

potatotips#34で登壇してきました

横幕です。昨日は potatotips #34 というモバイルアプリ開発に関する知見共有のための勉強会で発表をしてきました。

potatotips #34 は UIEvolution さんの会場で開催されました。自分の発表では「TransactionTooLargeException」を題材に、稀によく見かけるクラッシュレポートの対策方法について話しました。


TransactionTooLargeException はプロセス間通信の最中に発生し得る例外で、プロセス間通信中にメモリを使いすぎることが原因で起こります。プロセス間通信と言うとあまり馴染みがないようにも思いますが、Android の様々な基本機能を支えている重要な技術であり、身近なところでも使われています。例えば、"Intent の extras に Bitmap を直接格納しないで画像を指し示す Uri で渡す"、というプラクティスはこのプロセス間通信におけるメモリの制約から来ています。Bitmap でなくとも、巨大な文字列を extras に格納することでも簡単にこの例外を見ることができます。

この例外を回避する上で重要なことに、巨大すぎるデータを小分けにするということ、そして、同時にいくつものプロセス間通信を走らせすぎない、という2つのポイントがあります。Android では、あるアプリがプロセス間通信のために使用することができるメモリには 1Mb の上限があります。これは、アプリが実行するすべてのプロセス間通信で 1Mb の領域を共有する、ということです。そのため、データを小分けにするだけでなく、同時に動かすプロセス間通信の数も気にかけることが重要になります。

プロセス間通信そのものについては、dex.fm というポッドキャストの #10 Hacks in Drivemode や、TechBooster - AZ異本 grimoire of android でも取り上げています。

ざっくりとまとめてみましたが、今後も potatotips をはじめ様々なイベントで登壇予定です。お楽しみに!

Drivemode, Inc.'s job postings
3 Likes
3 Likes

Weekly ranking

Show other rankings