今どきの Retrofit と LiveData で Coroutine

ありがとうございます。


👉 Retrofit 

ご存知の通り Retrofit2 では、サスペンドな関数も利用できるようになっております。

👉 SpaceX REST API で試す Retrofit の coroutine 対応 


// NewModel.kt
@GET("/feed/here/")
suspend fun getData(@Query("token") token : String) : Status


// NewRepository.kt
class Repository {
  var client = RetrofitService.createService(JsonApi::class.java)
  suspend fun getData(token : String) = client.getData(token)
}

ので、以下のようなこれまでのコードは、


// OldViewModel.kt
val data = MutableLiveData<Status>()

private fun loadData(token: String){
  viewModelScope.launch {
    val retrievedData = withContext(Dispatchers.IO) {
      repository.getData(token)
    }
    data.value = retrievedData
  }
}

シンプルに以下のように書けます。


// NewViewModel.kt
val data : LiveData<Status> = liveData(Dispatchers.IO) {
      val retrievedData = repository.getData(token)
      emit(retrievedData)
    }

ありがとうございます。

👉 Exploring new Coroutines and Lifecycle Architectural Components integration on Android 
👉 Using Retrofit 2 with Kotlin coroutines - ProAndroidDev 


Android A/B パーテーション と Lineage OS インストール

大まかでもイメージしておくと得をすると思います。

👉 Here's a list of Android devices that support Seamless Updates 


👉 Download TWRP for sailfish 
👉 サポートが切れた Pixel に Android 10 相当の Lineage OS 17 を 

分かりやすく簡単に言いますが。

昔のパーテーション。

- recovery
- boot
- cache
- system
- vendor
- data

これが、Pixel時代以降の、A/B スタイルでは以下のようになります。

- boot_a
- boot_b
- system_a
- system_b
- vendor_a
- vendor_b
- data

キャッシュディレクトリは data/cache、リカバリパーテーションは boot_a と boot_b 以下に統合されました。

TWRP の flash 時には考慮が必須となります。

そして、TWRPのバージョンは、OpenGapps の 「Signature Verification」にも関係してきます。

👉 Help understanding A/B partitions | Google Pixel XL 
👉 TWRP lead explains why it'll take time for the custom recovery to support Android 10 

さらに、Android10では「ダイナミックパーテーション」などになるようです。

👉 Implementing Dynamic Partitions  |  Android Open Source Project 

よって、

Android10で初回のTWRP適用は、いきなり fastboot で flash するのはむずい。

なので、まず fastboot boot /path/to/twrp.img でメモリブートする。

そして、TWRPの端末への適用はインストーラ入りのzipで行う。

のが良いようです。

Pixelで以下の順でハマり続けた結果です。

Android10

非公式LineageOS17(Android10相当)

公式LineageOS16(Android9相当)


Chrome ダークモードの選択しているタブが見づらい

パソコン版のChromeだけども、ダークモードにしていると、なんだか分かりづらくね?

選択中のタブが。

こうしてスクリーンショットで見ても分かりづらい。

イライラだわ!

[設定] - [デザイン] から、テーマを変更しましょうか。

他のダーク系テーマに変更しました。

分かりやすくなりました!

てか、

手動でテーマ変更とかしたらダークモードの意味がねえけどな!

👉 Android で ダークモード 


【Android10】アプリを終了させる方法【ジェスチャーナビゲーション】

Chrome でやってみます。

こんな感じにスワイプします。

分かりづらいですね!

動画で。



以下のような流れです。

1. Chrome を開いた状態から、

2. 下のバーを「ゆっくり」上にスワイプして、

3. 指を離すと、上部にアイコンで小さく表示されますので、

4. それを上スワイプすると、

5. Chrome 終了!

きちんと終了されているので、アプリリストにも残っていませんね!

慣れたら素早くできるようになりますかね!


【Gboard】QWERTYキーが3種類あってはまる件【日本語入力】

前にも書きましたが。

👉 入力文字の 日本語 と 英数記号 切り替えをシンプルにする設定 

今現在の Gboard でもなんだか気持ちが悪いのですが。

 

QWERTYキーが3種類ある

日本人が使おうとするとき、QWERTYキーは3種類あります。

次のようにキーのレイアウトと表示される候補が違うのがわかります。

「日本語12キーから設定する英字QWERTY」

「日本語QWERTY」

「英語QWERTY」

このことが設定を分かりづらくさせています。

 

3種類を比較する

英語QWERTYでは、キー上をなぞって高精度に素早く英単語を変換できる「グライド入力」を使うことができます。

よって、3種類を表にすると以下のようになります。

QWERTY 変換候補 グライド入力
12英字 英語 2列
日本語 日本語 2列
英語 英語 1列

 

そもそもどう入力したいのか?

私の場合ですが。

日本語文字
→ 12キー【フリック入力】で
→ 【日本語単語】候補表示・選択
→ 入力欄に反映

英数文字
→ QWERTYキー【グライド入力】で
→ 【英単語】候補表示・選択
→ 入力欄に反映

 

まとめ

そんな設定にしたい人用にまとめておきます。

1. 「キーボードの言語とレイアウト」は、「日本語 12」と「英語(米国) QWERTY」のみ。

2. 「グライド入力」は、すべて有効化。

3. 「12キーレイアウトの設定」は「英字入力は QWERTY」をOFF。

4. 「キー」は「言語切り替えキーを表示」をON。

5. 日本語と英数の切り替えは「多言語切り替えボタン」で行う。

最後に、設定画面上のQWERTYキー設定位置を図にして概念的に分かりやすくしておきます。

使いたいQWERTYキー1つだけを有効にすることが大事です。

みんなはどうしてますか?

ちなみに、複数のキーボードアプリ間を切り替え利用したいときにも「多言語切り替えボタン」は役に立ちます。

👉 初めての Gboard キーボードのレイアウト設定 
👉 Android 端末 キーボード切り替え方法あれこれ