diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/ChatApplication.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/ChatApplication.kt index f9bdaf95..9b35e0d1 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/ChatApplication.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/ChatApplication.kt @@ -32,7 +32,10 @@ object AppEventHandler : ChatEventCallback { val events: SharedFlow> = _events override fun onEvent(type: Int, data: ByteArray?) { - if (type == 12) mainHandler.post { com.utun.chat.data.PhoneStateMonitor.refresh() } + if (type == 12) mainHandler.post { + com.utun.chat.data.CoreActivity.onCoreStarted() + com.utun.chat.data.PhoneStateMonitor.refresh() + } if (type == 12 || type == 13 || type == 65) mainHandler.post { com.utun.chat.data.RadioCallController.onEvent(type, data) } if (type == 13 || type in 61..64) mainHandler.post { com.utun.chat.data.LocalDiscovery.onEvent(type, data) } diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CoreActivity.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CoreActivity.kt index 3569ad48..97bfeb80 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CoreActivity.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CoreActivity.kt @@ -14,6 +14,13 @@ object CoreActivity { fun radioCall(value: Boolean) { radioCall = value; sync() } fun transfer(value: Boolean) { transfer = value; sync() } fun reset() { applied = null } + /** Новый экземпляр ядра ещё не получал состояние владельцев активности. */ + fun onCoreStarted() { + check(Looper.myLooper() == Looper.getMainLooper()) + applied = null + LogManager.addLog("INFO", "Activity", "core started; resynchronizing activity") + sync() + } fun sync() { check(Looper.myLooper() == Looper.getMainLooper()) if (!NativeLib.isReady()) { applied = null; return }