Let's see a simple example of a delegated property:
- First, we will work with the lazy delegate property. Simply put, this delegate can suspend the object creation until we first access it. This is really important when you are working with heavy objects; they take a long time to be created—for example, when creating a database instance or maybe dagger components. Not only this, the result is remembered and the same value is returned for subsequent calls for getValue() on this kind of delegated property. Let's take a look at an example:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val button by lazy { findViewById<Button>(R.id.submit_button) } setContentView(R.layout.activity_main) ...