HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2019/03/01

2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない! 2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!

(Androidの開発で AACって何? DataBinding、LiveData、ViewModel、LifecycleObserverについて解説)

Tags: [Android開発]




● 2019年になったから Android Architecture Componentsで開発しようじゃないか!

 今から始めても遅くない!って言うか完全に浦島状態。

 Androidの開発で AACって何?
 AACの中でも必ず使う DataBinding、LiveData、ViewModel、LifecycleObserverについて解説!

 あと、Kotlin!

● Kotlinとは?

 Kotlinとは開発言語の名称で、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した。
 従来は Java言語で開発していたが、Kotlin言語でも開発できる様になった。

 Kotlin言語の記述方法は iOSの Swift言語に似ています。
 なお、Kotlin言語は無駄な記述を「省略」する事を「美徳」としている様で、極限まで最適化されたコードは Kotlin言語の全てを知らないと読み解く事ができず、全く解読できません。
 なお、同一プロジェクト内に Java言語と Kotlin言語を混在させての開発も可能です。

● Android Architecture Components
 ここを見る!!
Android Architecture Components - Android Developers

● Android Jetpack
Android Jetpack - Android Developers
 Jetpack は、優れた Android アプリを簡単に開発できるようにするための Android ソフトウェア コンポーネントのコレクションです。

● AndroidX
AndroidX の紹介 2018年5月24日木曜日

 旧: android.arch.lifecycle.LiveData
 新: androidx.lifecycle.LiveData

● Android開発環境 Android Studio 3.3.2

Android Studio 3.3.2
 android-studio-ide-182.5314842-windows32.zip

 大昔に 64bit環境で構築して痛い目に遭ったので 32bit版の Android Studioを使用しています。
 但し、NDKは CMakeの関係で 64bit版を使用しています。

● Java SE Development Kit 8 Downloads

Java SE Development Kit 8 - Downloads - Oracle
 Java SE Development Kit 8u202
 jdk-8u202-windows-i586.exe

 大昔に 64bit環境で構築して痛い目に遭ったので 32bit版の JDKを使用しています。


● Androidの開発に使うパソコンに必要なスペックは?

重要度順推奨備考
1)RAM メモリ容量16GB以上8GB程度だとスワップが発生して遅いです
2)SSD空き容量 128GB以上HDD ハードディスクだと遅いです
3)最近の Core-i3以上の CPUCore-i3 6100U以上セレロンとか ATOMとかは遅いです


● Android DataBindingの歴史年表

 Androidの開発に使用するコンポーネントを追いかけている人は既にご存知と思いますが、私みたいに全く関心を示さず、今頃になって必要性に迫られて習得を始めると言う人も居る筈。
 また、これから初めて Androidを開発する様な Android開発手法の知識がゼロベースの人にも この Android DataBindingの歴史年表は役に立つと思います。

 その理由は Android DataBindingは一度にリリースされたのではなく、初期のリリースから時代と共に積み重ねで改良がされており、ググってデータバインディング関係の記事を検索した時に、その記事の内容はその記事の執筆された時代の内容で書かれているので、データバインディングの初期の記事と、後期の記事とで内容に差異があり、その時代背景を知らないと「いったいどっちでプログラムを書けば良いんだ!?」と混乱の元となります。
 ※ 私の場合がそうなりました。

データ バインディング ライブラリ - Android Developers

 DataBindingの参考書を購入する場合は最新の内容を含んで書かれている物の購入をオススメします。古い内容だけで書かれている物は役に立ちません。


実践 Android Data Binding (技術書典シリーズ(NextPublishing))
ASIN: B07KXG8W7F

出版社: インプレスR&D (2018/12/7)


● Android DataBindingの歴史年表 2015年

 2015年 5月の Google I/O 2015で Data Bindingが発表されました。
 この時は Android M Previewも同時に発表されました。
 Android M Previewは Android 6.0 Marshmallowの事で、正式版リリースは 2015年 10月 6日にされました。API Level 23となります。
Android M Developer Preview & Tools 28 May 2015
 開発環境である Android Studioは 1.3 Previewで Gradleは Gradle 2.4でした。

 DataBindingで xmlレイアウトの内容を Javaのコードから直接参照できる様になりました。
 なので findViewByIdが不要になりました。

 ObservableFieldや BaseObsaervable、@Bindable、notifyPropertyChanged(BR.hoge)を使います。
 (これらは LiveDataのデータバインディング対応で使わなくても良くなりました)
 @BindingAdapter

● Android DataBindingの歴史年表 2016年

 2016年 5月の Google I/O 2016では Data Bindingの改良版が発表されました。
 主な改良点
 ・双方向バインディング @={}
  双方向バインディングが存在しなかった時代は、新しい入力値と現在保持している値が同じかどうかの処理が必要でした。これが無いと自身の代入にも反応して無限ループしてしまう。
 ・メソッドリファレンス
  android:onClick="@{handlers::onClickFriend}"
 ・リスナーバインディング
  android:onClick="@{() -> presenter.onSaveClick(task)}"
 ・パラメータを 2 つ以上持つラムダ式
  android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}"
 ・idをラムダ式で使える(スネークケースはキャメルケースに変換される)

 その他、
 ・Transitionsアニメーション
 ・app:fontによるカスタムフォント指定

 Android Studio 2.2
 Android N Developer Preview、Android 7.0 Nougat API Level 24。正式版リリースは 2016年 8月 22日

● Android DataBindingの歴史年表 2017年

 2017年 5月の Google I/O 2017では LiveData、ViewModel、LifecycleObserverが発表されました。
 ViewModelで画面回転等による画面破棄でもデータを保持する事が可能になりました。
 LiveDataの observe()と Observer#onChanged()でデータの変化を監視して UIの更新が出来るようになりました。
 ※注: この LiveDataの使い方は DataBindingでは有りません。

 Android Studio 3.0
 Android O Preview、Android 8.0 Oreo API Level 26。正式版リリースは 2017年 8月 21日
 Kotlin言語の公式サポート

● Android DataBindingの歴史年表 2017年 12月

 Android Studio 3.1 Canary 6で LiveDataが DataBinding対応になりました。
 ※ Android Studio 3.1 正式版は 2018年 3月

 LiveDataを DataBindingする場合は binding.setLifecycleOwner(this)が必要。
 (LiveDataをデータバインディングに使用しない場合は不要)

 RecyclerView等では executePendingBindingsメソッドを明示的に呼び出す必要が有る。

 なお、Android Studio 3.1では DEXコンパイラが DXから D8がデフォルトに変わりました。
 また、コード圧縮(難読化)は Android Studio 3.3(2019年 1月)では ProGuardから R8がデフォルトに変わります。

● Android DataBindingの歴史年表 2018年

 2018年 5月の Google I/O 2018
 サポート ライブラリが AndroidXとして生まれ変わる。

 Android P Beta、Android 9.0 Pie API Level 28。正式版リリースは 2018年 8月 6日
 Android Studio 3.2

● 2019年

 2019年 3月現在 Android Studio 3.3.2

 今から始めても遅くない!と言うよりも、やっとデータバインディングが気軽に使える様になったので、「今から始めて丁度良かった!」となります。
 (初期の頃から追いかけていた人は大変でしたでしょうに。。。)


●通信ライブラリは?

 Volleyを捨てて OkHttp3、Retrofit2へ。
square/okhttp
square/retrofit


● DependencyInjection DI 依存性の注入

 Dagger 2
Dagger


●画像読み込みライブラリ

 Glide
bumptech/glide



Tags: [Android開発]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る
AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る

  Android開発 データ バインディング 虎の巻 Android Studio

Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法
Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法

  Androidプロジェクトに AAR/JAR形式のライブラリを組み込む方法のバリエーション

Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法
Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法

  Android JNIの C言語で FileDescriptor経由でダイレクトに rawリソースを読み込む、メモリ受け渡しやダミーファイル作成が不要

Kotlin大嫌い人間が Kotlin言語を必死に勉強する
Kotlin大嫌い人間が Kotlin言語を必死に勉強する

  行末にセミコロン;の無い言語は大嫌い

Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める
Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める

  Androidの開発で dipって何?密度非依存ピクセル?Density-Independent Pixels?って何者?




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2019 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/android/android_architecture_components_2019/