iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

最直接觀察這些生命週期階段的方式,就是去覆寫這些回調方法。

  • onCreate()
  • onStart()onRestart()
  • onResume()
  • onPause()
  • onStop()
  • onDestroy()

onCreate()

當 Activity 被建立時只會調用一次。此時 Activity 尚未可見(visible)。

onCreate(),你會執行重要、一次性的初始化,像是膨脹佈局(inflating the layout)。

請參考以下官方 Codelab 示例:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Timber.i("onCreate Called")

        // Use Data Binding to get reference to the views
        // 使用資料綁定(Data Binding)來得到對視圖(views)的引用
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

        binding.dessertButton.setOnClickListener {
            onDessertClicked()
        }

        // Setup dessertTimer, passing in the lifecycle
        // 設置 dessertTimer,將 Activity 的生命週期傳遞進 DessertTimer class
        dessertTimer = DessertTimer(this.lifecycle)

        // If there is a savedInstanceState bundle,
        // then you're "restarting" the activity
        // 如果有 savedInstanceState bundle 的存在
        // (可以理解成暫存 Activity 的一捆進度)
        // 則重新開始(restarting) Activity
        // If there isn't a bundle, then it's a "fresh" start
        // 如果這個暫存進度不存在,則全新開始一個 Activity
        if (savedInstanceState != null) {
            // Get all the game state information from the bundle, set it
            // 從暫存進度獲取全部的遊戲狀態資訊,並設置這些資訊
            revenue = savedInstanceState.getInt(KEY_REVENUE, 0)
            dessertsSold = savedInstanceState.getInt(KEY_DESSERT_SOLD, 0)
            dessertTimer.secondsCount
                = savedInstanceState.getInt(KEY_TIMER_SECONDS, 0)
            showCurrentDessert()

        }

        // Set the TextViews to the right values
        // 將正確數值設置到 TextViews
        binding.revenue = revenue
        binding.amountSold = dessertsSold

        // Make sure the correct dessert is showing
        // 確保顯示正確的甜點圖片
        binding.dessertButton.setImageResource(currentDessert.imageId)
    }


參考資料
Dessert Pusher (Udacity - Free Courses - Example Code)


上一篇
[Day 14] Activity 的 lifecycle - 生命週期作用為何?
下一篇
[Day 16] 場外主題 - Logcat 視窗的按鈕功能
系列文
[Android] 在 activity 與 fragment 身上的 lifecycle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言