Android Qでは戻るボタンがなくなる…? | ギズモード・ジャパン
Pの実装状態を見る限り明らかに左方向は意図的に開けてるよな。

ピルボタン(ホームボタン) の 使い方 と アプリ履歴 の 一括削除 【Android Pie】
しかし、いまやボタン一つの操作方法多すぎじゃね?
Gboard 日本語 12キー 左右のカーソルキーを使ってすばやく上下移動する方法
いちいち
「ボタンをみたら上下左右にグリグリ」
やってみるとかなあ。
Android Qでは戻るボタンがなくなる…? | ギズモード・ジャパン
Pの実装状態を見る限り明らかに左方向は意図的に開けてるよな。

ピルボタン(ホームボタン) の 使い方 と アプリ履歴 の 一括削除 【Android Pie】
しかし、いまやボタン一つの操作方法多すぎじゃね?
Gboard 日本語 12キー 左右のカーソルキーを使ってすばやく上下移動する方法
いちいち
「ボタンをみたら上下左右にグリグリ」
やってみるとかなあ。
Retrofit の coroutine 対応が進んでいるようです。
Jake Wharton's retrofit2-kotlin-coroutines-adapter has been the go-to solution for bridging the coroutine world with Retrofit for a little while. But now, a much-anticipated PR has finally been merged, officially bringing coroutine support to Retrofit 2.
Retrofit meets coroutines - zsmb.co
SpaceX-API とか公開されていたのですね。

r-spacex/SpaceX-API: Open Source REST API for rocket, core, capsule, pad, and launch data
https://api.spacexdata.com/v3/rockets

対応する最小限のデータクラスを作って、試してみましょう。
data class Rocket(
val id: Int,
@field:Json(name = "rocket_name")
val name: String
)
val retrofit = Retrofit.Builder()
.baseUrl("https://api.spacexdata.com/v3/")
.addConverterFactory(MoshiConverterFactory.create())
.build()
val api = retrofit.create<SpaceXApi>()
create() は reified type が使えるようになってます。
JSONのシリアライズはお好みのものを。
そして、interface を書いていきますが、
ここを戻り値に別に見てみます。
interface はこれまでと同じ記述。
interface SpaceXApi {
@GET("rockets")
fun getRockets(): Call<List<Rocket>>
}
受け側の3つの例。
runBlocking {
val rockets: List<Rocket> = api.getRockets().await()
rockets.forEach(::println)
}
runBlocking {
val rockets: List<Rocket> = try {
api.getRockets().await()
} catch (e: Exception) {
println("Network error :[")
return@runBlocking
}
rockets.forEach(::println)
}
runBlocking {
val response = api.getRockets().awaitResponse()
if (response.code() == 200) {
response.body()?.forEach(::println)
}
}
結果はすべて同じ。
Rocket(id=1, name=Falcon 1)
Rocket(id=2, name=Falcon 9)
Rocket(id=3, name=Falcon Heavy)
Rocket(id=4, name=Big Falcon Rocket)
これまで非同期処理時に必要だった コールバック や enqueue の記述は必要ありません。
受け側の記述を変化させることで、Exception や レスポンスコードを拾うことができます。
suspend を使うことでさらに直感的に書けます。
interface SpaceXApi {
@GET("rockets")
suspend fun getRockets(): List<Rocket>
}
runBlocking {
val rockets = api.getRockets()
rockets.forEach(::println)
}
結果。
Rocket(id=1, name=Falcon 1)
Rocket(id=2, name=Falcon 9)
Rocket(id=3, name=Falcon Heavy)
Rocket(id=4, name=Big Falcon Rocket)
List<Rocket> に対して Call や Deferred のようなラッパーは必要ありません。
Response を拾います。
interface SpaceXApi {
@GET("rockets")
suspend fun getRockets(): Response<List<Rocket>>
}
runBlocking {
val response = api.getRockets()
if (response.code() == 200) {
response.body()?.forEach(::println)
}
}
結果。
Rocket(id=1, name=Falcon 1)
Rocket(id=2, name=Falcon 9)
Rocket(id=3, name=Falcon Heavy)
Rocket(id=4, name=Big Falcon Rocket)
最も実用的で簡潔な記述と思われます。
Kotlin で記述するにしても、多くの記述が可能となりそうです。
RxJava他ライブラリを利用しての非同期実装を含めると様々となります。
ネット上で検索するにも自分の環境や好みに合った記述を探すのにも時間がかかることになり混乱もありそうで。
Jakeも今後はメンテしないと思われます。

ちなみに、これらの話は今現在はSNAPSHOTで進行中です。
以下でどうぞ。
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
implementation "com.squareup.retrofit2:retrofit:2.5.1-SNAPSHOT"
}
macOS用のパッケージマネージャ「Homebrew」の最新版となる「Homebrew 2.0」正式版がリリースされました。
macOS用パッケージマネージャ「Homebrew 2.0」リリース。LinuxとWSL(Windows Subsystem for Linux)にも正式対応 - Publickey

やってみます。
ん?
なぜか上がってるけど。
そして、
brew cleanup
これだけ?
Rやthemeでunresolved referenceが出るときは一旦
welcome to android studioって出てくるトップのリストから該当するやつを削除してまた開き直すと解決する。…ときもある— 謎のなにか (@_______Gecko) February 2, 2019
さっきからIntellijでずっとやってるんだけどずっとUnresolved reference: Rが出てるがなんなんだ。コンパイル通ってるし
— ヤマゲン (@Ymgn_Bass) January 25, 2019
Any1 had problem with unresolved reference R, when updating gradle to 3.3.0 version from 3.2.1? #AndroidDev #gradle
— Ban Markovic (@_d_ban) January 16, 2019
What is the one solution that works for "unresolved reference R" error in Android studio?. I have exhausted the trial and error solutions.
Clean project
Rebuild project
Sync project with Gradle files
Invalidate cache and restart.#AndroidDev— Isma'il👨🏾 (@codeismail) December 15, 2018
Unresolved Reference R after Androidx Migration https://t.co/BQW8P2QeKx
— KotlinAtSO (@kotlinatso) October 30, 2018
AGP3.3でjetifierがコケるのどうすればいいのこれ?
— うし (@ushi3_jp) January 29, 2019
AGP3.3に上げたから?なのかmoshi proguardが急に通らなくなって困る。
IssueRみて8を有効にしたんだけどこんなんでいいんかいな。雰囲気で使ってる— katsuki nakatani (@KatsukiNakatani) January 22, 2019
謎。


androidx か?
Unresolved reference: R - Twitter検索 / Twitter
AS最新版へ更新でケリがつく。
AndroidXが使える環境は狭い? https://t.co/MKZM7gQlUM
— ちゃんずまお (@maochanz) February 5, 2019
IDEもチャラく頻繁に切り替える時代?
JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる?