2019年11月23日土曜日

Android Dev Summit 2019 報告会で Jetpack Compose について話してきました。

来年(2020年)に beta を出すと発表されました。随分頑張っているようです。
まだまだまともなアプリを作れる段階ではないです。ちょっとまともなものを作ろうとするとすぐ辛くなります...

現状どのような Component が用意されているかみるには Jetnews サンプルを見るのがよいです。
Android Studio で [File] - [New] - [Import Sample...] から import できます。





2019年10月8日火曜日

Master of Dagger の正誤表

技術書典7で出した「Master of Dagger」の正誤表です。

10章 10.1 ViewModel




Androidにはリソースが足りなくなったときにフレームワークがしばらく使われていないActivityを破棄し、あとでそのActivityが必要になったときに再生成する仕組みがあります。
Activityでデータを持っていると、Activityが破棄されるときに一緒に消えてしまうため、サーバーから再度取得したり、破棄されるときにデータを保存して再生成時にリストアする処理が必要になります。
ViewModelはこの破棄・再生成時のデータ保存処理を楽にしてくれます。ViewModelはActivityの再生成を超えてインスタンスが保持される仕組みになっており、ViewModelでデータを持っておけば破棄・再生成後も以前のデータにアクセスできます。



AndroidではConfigurationが変わったときにActivityを破棄して作り直す仕組みがあります。Configurationには画面の向きや言語設定や画面サイズなどがあり、Activityを作り直す仕組みによって新しいConfigurationに最適なレイアウトや文字列リソースで画面が作られます。
しかしActivityで保持していたデータは画面回転などConfigurationの変更によってActivityが再生成されるときに消えてしまいます。そのため再度データを取得したり、Activityが破棄されるときにデータを保存して再生成時にリストアする処理が必要になります。ViewModelはこのデータの引き継ぎ処理を楽にしてくれます。
ViewModelはConfigurationの変更によるActivityの再生成を超えてインスタンスが保持される仕組みになっており、ViewModelにデータを持たせるようにすれば、再生成後のActivityからも以前のデータにアクセスすることができます。



13章 13.1 Android で Dagger を使うときの問題点




ボイラーブレート



ボイラープレート



2章 2.1 Dagger とは




*2 Dagger 1はリフレクションベースの動的DIフレームワークでした



削除 (Dagger 1では一部リフレクション使った機能がありました)



2019年9月5日木曜日

Kotlin メモ : count

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/count.html


大文字数を数えるダメな例 val String.upperCaseCount: Int get() = filter { it.isUpperCase() }.length

大文字数を数える良い例 val String.upperCaseCount: Int get() = count { it.isUpperCase() }