From e4feff0488ebaefc3116fbd959eab6aada68a2bb Mon Sep 17 00:00:00 2001 From: Gaurav Ujjwal Date: Thu, 9 Feb 2023 17:11:23 +0530 Subject: [PATCH] Don't paste text on clipboard when app is in background This is an attempt to fix mysterious ANRs being reported on Google Play --- .../main/java/com/gaurav/avnc/ui/vnc/VncActivity.kt | 1 + .../java/com/gaurav/avnc/viewmodel/VncViewModel.kt | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/gaurav/avnc/ui/vnc/VncActivity.kt b/app/src/main/java/com/gaurav/avnc/ui/vnc/VncActivity.kt index 1610c2a..d5fbfae 100644 --- a/app/src/main/java/com/gaurav/avnc/ui/vnc/VncActivity.kt +++ b/app/src/main/java/com/gaurav/avnc/ui/vnc/VncActivity.kt @@ -113,6 +113,7 @@ class VncActivity : AppCompatActivity() { //Observers viewModel.credentialRequest.observe(this) { showCredentialDialog() } viewModel.sshHostKeyVerifyRequest.observe(this) { showHostKeyDialog() } + viewModel.clipTextReceivedEvent.observe(this) { viewModel.setClipboardText(it) } viewModel.state.observe(this) { onClientStateChanged(it) } } diff --git a/app/src/main/java/com/gaurav/avnc/viewmodel/VncViewModel.kt b/app/src/main/java/com/gaurav/avnc/viewmodel/VncViewModel.kt index 81bcd72..20b2f5e 100644 --- a/app/src/main/java/com/gaurav/avnc/viewmodel/VncViewModel.kt +++ b/app/src/main/java/com/gaurav/avnc/viewmodel/VncViewModel.kt @@ -160,6 +160,10 @@ class VncViewModel(val profile: ServerProfile, app: Application) : BaseViewModel */ val sshHostKeyVerifyRequest = LiveRequest(false, viewModelScope) + /** + * Fired when clip text is received from server and clipboard sharing is ON. + */ + val clipTextReceivedEvent = LiveEvent() /************************************************************************** * Connection management @@ -298,10 +302,8 @@ class VncViewModel(val profile: ServerProfile, app: Application) : BaseViewModel } private fun receiveClipboardText(text: String) { - viewModelScope.launch(Dispatchers.Main) { - if (pref.server.clipboardSync) - setClipboardText(text) - } + if (pref.server.clipboardSync) + clipTextReceivedEvent.fireAsync(text) } /**************************************************************************