AAC (Android Architecture Componets)


2017年、Google I/Oは新しいリポジトリAndroidアーキテクチャコンポーネント(AAC)を発表した.ACCは、アンドロイドアプリケーションの開発時によくある問題を解決するのに役立つライブラリだと説明しています.
AACには5つのライブラリがあります.
  • Lifecycles
  • LiveData
  • ViewModel
  • Room
  • Paging
  • 💡 Lifecycles



    Lifecyclesは、ライフサイクルを監視するためのライブラリです.ライフサイクルは、イベント、ステータス、およびLifecycleObserverから構成されます.ライフサイクルでは、onCreateやonResumeなどのメソッドに大量のコードが格納され、メンテナンスが難しいため、使いやすくなります.

    📌 Event


    アクティブまたはクリップで発生するライフサイクルイベントに応答
  • ON_CREATE
  • ON_DESTROY
  • ON_PAUSE
  • ON_RESUME
  • ON_START
  • ON_STOP
  • 📌 State


    アクティブまたは断片の現在の状態に対応
  • INITIALIAZED
  • CREATED
  • DESTROYED
  • STARTED
  • RESUMED
  • 📌 Lifecycle Owner


    アクティブまたは断片からライフサイクルを分離し、ライフサイクルオブジェクトに含めます.ライフサイクルオブジェクトを使用すると、画面のライフサイクルを別の場所から監視できます.ライフサイクルを含むライフサイクルオブジェクトは、ライフサイクルの所有者です.すなわち、ライフサイクルを観察するobserverクラスです.

    💡 LiveData


    LiveDataは、データの変化を観察できるData Holderクラスです.
    従来のObserverableとは異なり、LiveDataはAndroidライフサイクルを理解しています.(Lifecycle-Aware)
    これは、Androidコンポーネントのライフサイクル(ライフサイクル)を認識し、それに応じて
    LiveDataは、イベント時のみデータを更新します.
    アクティブ状態は開始またはRESUMEDを表します.
    また、LiveDataオブジェクトはObserverオブジェクトとともに使用されます.LiveDataが所有するデータに変化がある場合、LiveDataは登録済みのObserverオブジェクトに変化があることを通知し、ObserverのonCharded()メソッドを実行します.
    LiveData is an observable data holder.
    This allows the components in your app to be able to observe LiveData objects for changes without creating explicit and rigid dependency paths between them.
    //1
    val liveData: MutableLiveData<Any>()
    
    //2
    liveData.value = "Hello"
    
    //3
    liveData.observe(this, Observer {
    //UI update
    })
  • liveData初期化タスク
  • liveDataは、valが変更できない変数として宣言されていますが、liveDataはMutableLiveDataであるため、値は変更できます.liveDataの値が変化すると、すべてのアクティブな対応する観察者に信号が送信されます.
  • liveDataは、アクティブまたはセグメントでよく観察される.observerでは、it parameterを使用して最近変更した値を受信できます.
  • 💡 ViewModel


    AACが提供するViewModel抽象クラスは、私たちがよく知っているMVVMのViewModelとはまったく関係ありません.現在、Androidの開発に伴いMVVMが主流となり、MVVMではViewとModelの間でデータの管理とバインドが可能となっている.しかしAACのViewModelは全く違う機能を持っています.だから、いつも混同しないように気をつけましょう.
    Android公式ドキュメントでは、ACCが提供するViewModelの定義は以下の通りです.
    The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
    簡単に言えば、環境の変化時にビューに適用されるUIを維持できるライフサイクルを理解するクラスです.これは、ビューとモデルの間でデータを管理およびバインドするMVVMのViewModelとはまったく異なります.
    主にアプリケーションを使用して画面を回転し、Activityまたはfragmentが終了して再生成されます.つまり、ビューで使用するデータを再読み込みする必要があります.ただし、AACのViewModelは画面を回転させてもデータ情報が保持されるため、データを再ロードする必要はありません.

    💡 Room


    Android開発では、SQLiteをローカルデバイスとしてよく使用しています.しかし、使い方は複雑です.そのため、スタジオはグーグルが提供する公式オブジェクト関係マッピング(ORM)であり、SQLite DBをより使いやすくしています.Roomを使用すると、ネットワーク接続の有無にかかわらず、実行マシンにアプリケーションデータキャッシュを作成できます.スタジオはAnnotationに基づいています.
    ここで、ORMは、データベーステーブルにマッピングされたオブジェクトを作成し、そのオブジェクトからデータベースを管理するプログラムである.
    適切なAnnotationを使用して、データベース、テーブル、DAOなどを簡単に定義できます.詳細についてもAnnotation宣言を使用して、一部のスタジオの規則に合致する場合、プライマリ・キー、クエリー・パラメータ、および戻りタイプは、多くのコンテンツに自動的に一致します.

    💡 Paging


    RecyclerViewでスクロールする場合は、コンテンツを特定の基準に分割し、Pagingと呼ばれるスクロール範囲でのロードを支援します.
    Pagingは3つの作業を行います.
  • クエリー
  • ページ単位でデータを入力
  • データ
  • を特定の条件でページング.
  • の重複物を検査します.
  • この3つの仕事はすべて実行するのが不便で、しかも仕事量が多い.それが実現しやすいのがPaging Libraryです.Pageライブラリは全部で3種類あります.
  • データソース:ローカルまたはネットワークから取得するデータを含むクエリ
  • PagedList:PageプロパティとDataSource.Pageプロパティに従って、DataSourceの範囲内のデータをロードします.
  • PagedListAdapter:PageListをUIに割り当て、重複項目を確認します.