Skip to content

Latest commit

 

History

History

checkedlazy

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Checked Lazy

mainThreadLazy that checks property access on main thread, and checkedLazy to make your own variant.

Supported platforms: Android.

NOTE: Coroutines can replace the need for this split altogether in most cases.

Setup

This dependency is not included in any of the fun-packs, because we don't believe all apps need its content nowadays.

Add it with refreshVersions: Splitties.checkedlazy.

For reference, the maven coordinates of this module are com.louiscad.splitties:splitties-checkedlazy.

Content

This library provides a checkedLazy() method that returns a Lazy delegate, as well as mainThreadLazy().

checkedLazy() takes as first parameter a function where you can implement an access check.

The second parameter is the lazy initializer, as in Kotlin stdlib lazy.

mainThreadLazy { … } is a shorthand for checkedLazy(::checkMainThread) { … }. It's there because main thread checking is a common use case on Android due to its synchronized nature and its omnipresence.

Example

val noMainThreadChecker = noAccessOn(mainThread)

class YourClass {
    val greeting: String by mainThreadLazy { "Hello Splitties!" }
    val expensiveObject by checkedLazy(noMainThreadChecker) { doHeavyInstantiation() }
}