Source code

Revision control

Copy as Markdown

Other Tools

{{- self.add_import("android.os.Build") }}
{{- self.add_import("androidx.annotation.RequiresApi") }}
private fun UniffiCleaner.Companion.create(): UniffiCleaner =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
AndroidSystemCleaner()
} else {
UniffiJnaCleaner()
}
// The SystemCleaner, available from API Level 33.
// Some API Level 33 OSes do not support using it, so we require API Level 34.
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
private class AndroidSystemCleaner : UniffiCleaner {
val cleaner = android.system.SystemCleaner.cleaner()
override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable =
AndroidSystemCleanable(cleaner.register(value, cleanUpTask))
}
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
private class AndroidSystemCleanable(
private val cleanable: java.lang.ref.Cleaner.Cleanable,
) : UniffiCleaner.Cleanable {
override fun clean() = cleanable.clean()
}