diff --git a/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt b/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt index 391a3bccf..a85c62bd6 100644 --- a/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt +++ b/android/app/src/main/kotlin/com/carriez/flutter_hbb/MainService.kt @@ -124,6 +124,9 @@ class MainService : Service() { } } + private var serviceLooper: Looper? = null + private var serviceHandler: Handler? = null + // jvm call rust private external fun init(ctx: Context) private external fun startServer() @@ -174,6 +177,11 @@ class MainService : Service() { override fun onCreate() { super.onCreate() + HandlerThread("Service", Process.THREAD_PRIORITY_BACKGROUND).apply { + start() + serviceLooper = looper + serviceHandler = Handler(looper) + } updateScreenInfo() initNotification() startServer() @@ -287,7 +295,7 @@ class MainService : Service() { } } catch (ignored: java.lang.Exception) { } - }, null) + }, serviceHandler) } Log.d(logTag, "ImageReader.setOnImageAvailableListener done") imageReader?.surface diff --git a/lib/pages/server_page.dart b/lib/pages/server_page.dart index 9ed0d3f79..64a15672c 100644 --- a/lib/pages/server_page.dart +++ b/lib/pages/server_page.dart @@ -346,6 +346,7 @@ class ConnectionManager extends StatelessWidget { icon: Icon(Icons.close), onPressed: () { FFI.setByName("close_conn", entry.key.toString()); + FFI.invokeMethod("cancel_notification", entry.key); }, label: Text(translate("Close"))) ],