Android和用戶交互的媒介Activity-生命週期方法

前言

每一個沒有談過戀愛的人到了一定的年紀想要的都是一份天真的愛情吧,但現實是那麼的殘酷,兩個人在一起會有無數的分歧有的時候確實很無奈呀,單身的同志們享受吧,戀愛中人們也要珍惜對方呀。

activity的介紹

首先我們要知道什麼是activity ,activity是一個和用戶交互的界面他是用戶和程序交互的媒介。

activity的生命週期

對於Android的四大組件的學習最重要的便是掌握它的生命週期方法,以便在對應的方法中做處理

  • onCreate():在執行這個方法的時候activity是處於創建的狀態的執行的是基本的應用的啓動邏輯,在activity 的生命週期中只執行一次,在這個方法執行結束之後執行的是 onStart()
   /***
     * 創建狀態
     * 該方法在activity創建的時候回調
     * 在onCreate()結束之後執行的是onStart()
     * 執行基本的應用啓動邏輯,該邏輯在聲明週期中只發生一次,
     * 此方法接收savedInstanceState參數,其中是包含Activity先前保存狀態的Bundle對象
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        start = findViewById(R.id.startActivityId)
        start.setOnClickListener {
            Intent(this@MyActivity, StartActivity::class.java).let {
                it.putExtra("name","myactivity")
                it.putExtra("value","startActivity")
                startActivity(it)
            }
        }
        startForResult = findViewById(R.id.startActivityForresultId)
        startForResult.setOnClickListener {
            Intent(this@MyActivity, StartActivityForResult::class.java).let {
                it.putExtra("name","myactivity")
                it.putExtra("value","startActivityForResult")
                startActivityForResult(it, REQUEST_CODE)
            }
        }
        startForResultText = findViewById(R.id.startActivityForresultTextId)
        var name = intent.getStringExtra("name")
        onNewIntent  = findViewById(R.id.onNewIntentId)
        onNewIntent.setOnClickListener {
            Intent(this, OnNewIntentActivity::class.java).let {
                it.putExtra("onnew",name)
                startActivity(it)
            }

        }
        Log.d(TAG, "activity初次創建")


    } 
  • onStart():在執行這個方法的時候activity是處於開始的狀態的,在activity由不可見到可見的時候執行這個方法,在該方法執行結束之後執行的是onResume()
 /****
     * 開始狀態
     * 在activity變得對用戶可見 這個回調包含的是直到用戶變得可以和前臺交互
     * 在onStart()結束之後執行的是onResume()
     */
    override fun onStart() {
        super.onStart()
        Log.d(TAG, "activity: 開始狀態")
    }
  • onResume():執行這個方法的時候activity處於運行態,在activity變得可以和用戶交互的時候執行這個方法,在該方法中實現核心功能
/****
     * 在與用戶交互之前的回調
     * 在activity變得可以和用戶交互時回調這個方法, 此時活動位於活動堆的棧定
     * 在該方法中實現 核心的功能
     */
    override fun onResume() {
        super.onResume()
        Log.d(TAG, "activity:用戶交互的狀態")
    }
  • onPause():執行這個方法的時候activity是處於暫停狀態,例如在點擊返回按鈕的時候,從技術上講意味着activity仍然部分可見,在該方法執行結束之後執行的是onStop或者是onResume()
/***
     * 暫停狀態
     * 當活動失去焦點並進入暫停狀態時, 系統將調用。例如,當用戶點擊“後退”或“最近”按鈕時,就會出現此狀態。從技術上講,這意味着您的活動仍然部分可見
     * 在該方法執行結束之後 執行的是  onStop()或者是onResume()
     */
    override fun onPause() {
        super.onPause()
        Log.d(TAG, "activity:處於暫停的狀態")
    }
  • onStop():執行這個方法的時候activity處於停止狀態,這個時候activity是完全不可見的,在該方法執行結束之後回執行onDestory()或者是onRestart()

 /****
     * 停止狀態
     * 當用戶不再可見該活動時, 系統將調用。之所以會發生這種情況,是因爲該活動被銷燬,新活動正在啓動,或者現有活動進入“已恢復”狀態並覆蓋了已停止的活動。在所有這些情況下,已停止的活動根本不再可見。
     * 在該方法執行結束之後執行的是 onRestart()或者是onDestory()
     */
    override fun onStop() {
        super.onStop()
        Log.d(TAG, "activity:處於停止的狀態")

    }


  • onDestory():執行這個方法的時候activity是處於銷燬的狀態的,在活動銷燬之前會回調這個方法
 /***
     * 銷燬狀態
     * 在活動被銷燬之前,系統將調用此回調。
     */
    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "activity:處於銷燬的狀態")

    }

  • onRestart():當處於“已停止”狀態的活動即將重新啓動時,系統將調用此回調。onRestart() 從活動停止時恢復其狀態。 此回調之後總是 onStart()

 /****
     * 當處於“已停止”狀態的活動即將重新啓動時,系統將調用此回調。onRestart() 從活動停止時恢復其狀態。
     * 此回調之後總是 onStart()
     */
    override fun onRestart() {
        super.onRestart()
        Log.d(TAG, "activity:處於重新啓動的狀態")

    }
  • onNewIntent():該方法在activity處於singleTop,singleTask啓動模式的時候在activity已經啓動的情況下在此啓動的時候會回調這個方法

  • onSaveInstanceState():當活動停止的時候系統會調用,onSaveInstanceState()方法 ,殺死您的活動可以將狀態信息保存到實例狀態Bundle中。


   /****
     * 當活動停止的時候系統會調用,onSaveInstanceState()方法 ,殺死您的活動可以將狀態信息保存到實例狀態Bundle中。
     *
     */
    override fun onSaveInstanceState(outState: Bundle) {
      val string =   outState.run {
            putInt(STATE_SCORE, 12)
            putInt(STATE_LEVEL, 12)
            "this is xiao hei "
        }
        println("this is $string")
        super.onSaveInstanceState(outState)


    }

  • onRestoreInstanceState():恢復易保存的數據

/****
     * 恢復易保存的數據
     */
    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        savedInstanceState.run {
            val currentScore = getInt(STATE_SCORE)
            val currentLevel = getInt(STATE_LEVEL)
            println("this is $currentLevel")
            println("this is $currentScore")
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章