blob: d025879848896f35e5bb281287043b5ac0eb593a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
{{- 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()
}
|