Skip to content

Commit d5aeb9d

Browse files
committed
Add MainActivity.startMainRunLoop
1 parent 7de0809 commit d5aeb9d

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

Demo/app/src/main/swift/MainActivity.swift

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ open class MainActivity: AndroidApp.Activity {
1414

1515
@JavaMethod
1616
open func setRootView(_ view: AndroidView.View?)
17+
18+
lazy var textView = TextView(self)
19+
20+
var runnable: AndroidJavaLang.Runnable!
1721
}
1822

1923
@JavaImplementation("com.pureswift.swiftandroid.MainActivity")
@@ -25,12 +29,19 @@ extension MainActivity {
2529

2630
runAsync()
2731

28-
runMainThread {
29-
Self.log("\(self).\(#function) Main Thread Runnable")
30-
RunLoop.main.run(until: Date() + 0.1)
31-
}
32+
startMainRunLoop()
3233

3334
setRootView()
35+
36+
// update view on timer
37+
Task { [weak self] in
38+
while let self = self {
39+
try? await Task.sleep(for: .seconds(1))
40+
await MainActor.run { [weak self] in
41+
self?.updateView()
42+
}
43+
}
44+
}
3445
}
3546
}
3647

@@ -56,6 +67,22 @@ private extension MainActivity {
5667
self.runOnUiThread(Runnable(block).as(AndroidJavaLang.Runnable.self))
5768
}
5869

70+
func startMainRunLoop() {
71+
let runnable = Runnable { [weak self] in
72+
// run main loop
73+
RunLoop.main.run(until: Date() + 0.01)
74+
// schedule next
75+
Task { [weak self] in
76+
while let self, let runnable = self.runnable {
77+
try? await Task.sleep(for: .seconds(1))
78+
self.runOnUiThread(runnable)
79+
}
80+
}
81+
}
82+
self.runnable = runnable.as(AndroidJavaLang.Runnable.self)
83+
self.runOnUiThread(self.runnable)
84+
}
85+
5986
func setRootView() {
6087
/*
6188
let listView = ListView(self)
@@ -68,9 +95,13 @@ private extension MainActivity {
6895
let adapter = ListViewAdapter(context)
6996
listView.setAdapter(adapter.as(Adapter.self))
7097
*/
71-
let textView = TextView(self)
72-
textView.text = "Hello Swift!"
98+
7399
setRootView(textView)
100+
updateView()
101+
}
102+
103+
func updateView() {
104+
textView.text = "Hello Swift!\n\(Date().formatted(date: .numeric, time: .complete))"
74105
}
75106
}
76107

0 commit comments

Comments
 (0)