Skip to content

Commit 2d62fbf

Browse files
committed
Add Runnable
1 parent 5e137cc commit 2d62fbf

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
//
2+
// Runnable.swift
3+
// AndroidSwiftUI
4+
//
5+
// Created by Alsey Coleman Miller on 6/9/25.
6+
//
7+
8+
import JavaKit
9+
import JavaRuntime
10+
import AndroidKit
11+
import AndroidJavaLang
12+
13+
@JavaClass("com.pureswift.swiftandroid.Runnable", extends: AndroidJavaLang.Runnable.self)
14+
open class Runnable: JavaObject {
15+
16+
public typealias Block = () -> ()
17+
18+
@JavaMethod
19+
@_nonoverride public convenience init(block: SwiftObject?, environment: JNIEnvironment? = nil)
20+
21+
@JavaMethod
22+
public func getBlock() -> SwiftObject?
23+
}
24+
25+
public extension Runnable {
26+
27+
convenience init(_ block: @escaping () -> Void, environment: JNIEnvironment? = nil) {
28+
let object = SwiftObject(block, environment: environment)
29+
self.init(block: object, environment: environment)
30+
}
31+
}
32+
33+
@JavaImplementation("com.pureswift.swiftandroid.Runnable")
34+
extension Runnable {
35+
36+
@JavaMethod
37+
func run() {
38+
block()
39+
}
40+
}
41+
42+
private extension Runnable {
43+
44+
var block: Block {
45+
guard let block = getBlock()?.valueObject().value as? Block else {
46+
fatalError()
47+
}
48+
return block
49+
}
50+
}

0 commit comments

Comments
 (0)