LoginSignup
0
1

More than 1 year has passed since last update.

【Android】明日から使いたい DroidKaigi 2021 の実装

Posted at

DroidKaigi 2021

先日 DroidKaigi 2021 が行われました。

3日間開催でTimetable(タイムテーブル)は以下です。
DroidKaigi 2021 タイムテーブル

DroidKaigi では多くの発表がありました。
その発表の中から 明日から使える実装 を2つ紹介します。
ViewModel と Lifecycle の技術にピックアップして選出しました。

lifecycleScope.launchWhen**** で表示データを更新

アプリがバックグラウンドの状態でデータを更新させたくない時に使えるのが以下です。
・lifecycleScope.launchWhenStart
・lifecycleScope.launchWhenResume
を利用することで非同期処理の結果を更新させることで、画面回転やメモリリークに強いアプリを目指せます!
ライフサイクルに準拠したアプリ開発が大切です。
↓のような実装が一例です。

TestActivity.kt
class TestActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        lifecycleScope.launchWhenStarted {
            // ViewModelからの更新をする
        }
    }

紹介されたセッションの動画のリンクを記載しておきます
マルチデバイス対応で考慮すべきポイント
Master of Lifecycle

SavedStateHandleでアプリの状態を保持

画面回転でも破棄されないViewModeでActivityやFragmentの破棄されてしまうデータを保持させるのに良いです!
↓のような実装が一例です。

TestViewModel.kt
class TestViewModel(
    private val savedStateHandle: SavedStateHandle
):ViewModel {
    private val _savedId = mutableStateOf<UiState>(UiState.Initial)

    init {
        savedStateHandle.setSavedStateProvider("[KEY]") {
            _savedId.value.toBundle()
        }

        savedStateHandle.get<Bundle>("[KEY]")?.let {
            _savedId.value = it.toUiState()
        }
    }
}

紹介されたセッションの動画のリンクを記載しておきます。
プロダクトレベルで必要となる Jetpack Compose テクニック
Master of Lifecycle

最後に

今回紹介したのは発表された内容のごく一部です。
3日間のセッションの動画一覧が↓のTwitterにまとまっています。
興味があるものを見て知識を増やしてAndroid開発力を高めていきましょう!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1