@@ -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