以下の記事はQiita@takahiromさんが記述した「Androidのライフサイクルの基礎からViewModel, LiveData, Kotlin Coroutinesまでを流れるように説明したい」の紹介記事です。

先日、Google Developers Expert for Androidになりました。 :tada: これからもよろしくおねがいいたします。
Androidの初心者がステップアップできるような記事を書いてみます。
なにかツッコミがあればコメントしてください🙏

ライフサイクルについて少し学んだ後に、ViewModel, LiveData, Kotlin Coroutinesについて、ライフサイクルに関連する課題とその解決策という位置づけで話していきます。

1. ライフサイクルの基礎

ライフサイクルとは生き物の蝶でいうと生まれて、卵から幼虫になってさなぎになって、蝶になって死んでいく感じですが、AndroidのActivityやFragmentという表示を持つコンポーネントにもライフサイクルがあります。
どのようなライフサイクルの状態があるのか、どのようなライフサイクルのメソッドがあるのかを説明してきます。
なんとなくわかる方は2.の画面回転からどうぞ。

Activityのライフサイクルの状態

Actiivtyのライフサイクルの変化で呼ばれるメソッドがあるので、それぞれのメソッドにログを入れて動作を確認してみましょう。
最近のActivityには今のライフサイクルの状態を確認できるgetLifecycle()というメソッドが追加されており、それにより、ライフサイクルの状態を確認できます。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d("MainActivity", "onCreate state:" + lifecycle.currentState)
    }

    override fun onStart() {
        super.onStart()
        Log.d("MainActivity", "onStart state:" + lifecycle.currentState)
    }

    override fun onResume() {
        super.onResume()
        Log.d("MainActivity", "onResume state:" + lifecycle.currentState)
    }

    override fun onPostResume() { // onPostResume()はonResumeの後に呼ばれます。
        super.onPostResume()
        Log.d("MainActivity", "onPostResume state:" + lifecycle.currentState)
    }

    override fun onPause() {
        super.onPause()
        Log.d("MainActivity", "onPause state:"+lifecycle.currentState)
    }

    override fun onStop() {
        super.onStop()
        Log.d("MainActivity", "onStop state:"+lifecycle.currentState)
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d("MainActivity", "onDestroy state:"+lifecycle.currentState)
    }
}









Related posts:

【ニュース】逢いたいのに逢えない 今 だからECサイト『地場めし』で"リモート父の日"
【ニュース】世界70ヶ国以上・累計10万人が利用するチャット英会話アプリ「Eigooo!」がさらに学びやすくバージョンアップ
【ニュース】農機具シェアリングプラットフォーム「AGRICOM」を提供開始
【ニュース】「オンライン海外旅行」にビデオ通話機能が追加!依頼からサービス提供までのワンストップ化を実現
【コラム】テレワークでも生産性を落とさない営業プロセスの在り方とは?
【コラム】テレワークを実現しにくかった業種にも対応できる――、レノボがテレワーク環境構築の実績とノウハウをアピール
【コラム】テレワークの課題にみる「次なるビジネスチャンス」
【コラム】「キャリアパスと評価制度を刷新」Gunosyエンジニア組織が取り組む改革の裏側を聞いてみた
【コラム】コードを書かない系エンジニア(プリセールスエンジニア)の仕事と価値
【Column】24 Programming Languages That Pay Top Salaries: Scala and More
【Kotlin】MockKはKotlin独自の言語仕様をほぼ網羅しているモックライブラリ
【ニュース】営業自粛でキャンセルになった大量の洋服を救いたい!洋服好きによる、洋服好きのための、洋服を救う期間限定プロジェクト「SAVE THE CLOTHES PROJECT」。
【ニュース】日本初!医療・介護・福祉 複業家レンタルサービス 「じぶんはけん」
【ニュース】リラクゼーション業界のトレンドも店舗型から宅配型へ。リラクゼーションマッチングアプリ「HOGUGU(ホググ)」が東京進出に向けてビジネスを加速。
【ニュース】モイ、アバターで通話を楽しむ音声SNS「パルミン」をリリース
【ニュース】オンライン次代のウェディング新サービス 『Web結婚式』登場!
【ニュース】ホテルに住める定額プラン、利用会員募集スタート〜ANA提携路線も7月より大幅増便〜
【ニュース】プログラミングしないエンジニアが急増中! 日本初のNoCode専門サロン「NoCodeCamp」募集開始
【ニュース】日本で活躍する外国人エンジニア向けコミュニティ”CodeGate”発足のお知らせ
【ニュース】STEM教育に最適!直感的に組み立てるだけで200種類以上のアクションが楽しめるプログラミングロボット「Clicbot」
【特集記事】ITエンジニアに必要な基礎スキル6つ|おすすめの勉強法を紹介!
【ニュース】無料のプログラミング学習プラットフォーム「LINE entry」、ゲーム感覚でプログラミングを学べる「ミッション」をリリース
【Kotlin】Unit Testing Firebase with Kotlin
【Analytics】Native Analytics on Apache Cassandra with Knowi: Tutorial
【Column】99% of Successful Software Engineers Practice These 10 Habits and Skills
【Swift】7 Awesome Open Source SwiftUI Projects to Inspire You (Part 2)
【Swift】7 Awesome Open Source SwiftUI Projects To Inspire You
【機械学習】Machine Learning: Google Colab- Why, When and How to Use it
【Column】The Future of Code Is in Your Browser
【Firebase】Top 3 open-source Firebase alternatives for 2020