【MVVM】 ViewModel の_プロパティ記述

Android Java ではあまり見かけなかったその記述。

Kotlin では、たくさん見かけてはいましたが、
個人的な明示記述小技かと思っていました。


private val _items = MutableLiveData<List<Task>>().apply { value = emptyList() }
val items: LiveData<List<Task>>
    get() = _items


private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean>
    get() = _dataLoading

android-architecture/TasksViewModel.kt at todo-mvvm-live-kotlin · googlesamples/android-architecture


private val _repositories = MutableLiveData<List<Repo>>()
val repositories : LiveData<List<Repo>>
    get() = _repositories

android - Kotlin: Read Only access of Immutable Type to an Internal Variable of a Mutable Type - Stack Overflow


private val _models = ConflatedBroadcastChannel<Model>()
override val models: ReceiveChannel<Model> get() = _models.openSubscription()

private val _events = Channel<Event>(RENDEZVOUS)
override val events: SendChannel<Event> get() = _events

SdkSearch/SearchPresenter.kt at JakeWharton/SdkSearch

Kotlin公式リファレンスにも書かれていたのですね!

Names for backing properties
If a class has two properties which are conceptually the same but one is part of a public API and another is an implementation detail, use an underscore as the prefix for the name of the private property:


class C {
  private val _elementList = mutableListOf<Element>()
  val elementList: List<Element>
      get() = _elementList
}

Properties and Fields: Getters, Setters, const, lateinit - Kotlin Programming Language

クラス内の処理実装に利用するのが _elementList で、
外部にただ公開するだけのが elementList。

こうやって並べてみると、自然に馴染じめてしまう不思議。

ViewModel作成時のイメージとして持っておくと良い。

👉【Kotlin】バッキング・フィールド/プロパティ
👉【MVVM】ViewModel インスタンスの取得


Android バージョンシェア 2019-03-31

ふと、

Android Studio 備え付けのツールで

確認してみましたよ、

「バージョンシェア」。

明らかに、古すぎですね。

仕方なくブラウザを開き、

Distribution dashboard  |  Android Developers へ。

半年近く前のやつ。

古すぎ。

 

調べる

なので、そんなサイトを探す。

Mobile & Tablet Android Version Market Share Worldwide | StatCounter Global Stats

Android OS version market share over time | AppBrain

各凡例の分け方が違うが、

数字や傾向は似ているので、

簡単に平均をとっちゃう。

 

結果

日本のような先進国では、

これより上位バージョン寄りであることは、

Playコンソールの数字からもよく分かる。

👉Android OS バージョン確認方法 (platform versions)




👉【公式 2018-05-07】Android Pie のバージョンシェア がやっと 10%超えている件


Gboard でユーザー辞書が変換候補に反映されない場合

端末のユーザー辞書(単語リスト)に文字を登録したのに、

Gboard の変換候補に全く反映されない場合。

以下のどちらかでいける。

A. Gboardの設定 から「学習した単語を削除」


「あa」を長押し

↓

「歯車」をタップ

↓

単語リスト

↓

学習した単語を削除

B. アプリ情報 から「ストレージを消去(キャッシュを削除)」


設定

↓

アプリと通知

↓

Gboard

↓

ストレージ

↓

ストレージを消去
(キャッシュを削除)

まとめ?



「ユーザー辞書」が反映されない話が多いので調べてみたらこんな。

どれくらい「学習」してるのか、

何を保存してるのか、

何のために、と

見えるようにしておいてくれたらわかりやすいのにな。

と思ったり。



👉 顔文字パック 辞書ツール - Google Play のアプリ
👉 顔文字/絵文字辞書 単語リスト - Google Play のアプリ 

👉 「単語リスト(ユーザー辞書)」が変換候補に表示されない場合