iT邦幫忙

2021 iThome 鐵人賽

DAY 2
1
Mobile Development

Andoroid - Kotlin筆記 (新)系列 第 2

[Day2] Android - Kotlin筆記: lazy

  • 分享至 

  • xImage
  •  

來介紹一下lazy

以下以TextView為例


我們一般init(初始化一個元件):

    private var textView: TextView? = null

此方式在後續使用到textView的程式碼都要加上?才能使用

/

或是使用lateinit的話(參數延遲初始化):

    private lateinit var textView: TextView

假設任何情況下,在後面程式碼沒有將textView成功初始化的話,
就會crash報錯:lateinit property tv has not been initialized


lazy

使用時機:宣告變數
第一次使用時才會執行內部程式碼,
且只有在會用到他時才會產生該值。

使用lazy,可以直接在內部宣告其初始狀態。

    private val tv: TextView by lazy {
        findViewById(R.id.textView)
    }
class MainActivity : AppCompatActivity() {

    private val tv: TextView by lazy {
        findViewById(R.id.textView)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        tv.text = "hello world"
    }
}

lazy只會在第一次使用時會被呼叫執行,
所以假設註解了

//    tv.text = "hello world"

tv這個值就不會被產生


比起initlateinit
lazy更為方便且安全,
也能更有效地節省空間。

目前宣告各式各樣的變數,基本上都用lazy,
覺得很方便所以分享一下。

第一次寫文章,各方面都有些彆扭,不好意思了。

參考資源:


上一篇
[Day1] Android - Kotlin筆記: 序章與目錄
下一篇
[Day3] Android - Kotlin筆記:高階函式與 lambda
系列文
Andoroid - Kotlin筆記 (新)18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言