diff --git a/app/src/main/java/org/linphone/activities/call/CallActivity.kt b/app/src/main/java/org/linphone/activities/call/CallActivity.kt index ae8344b95..b9d28eee9 100644 --- a/app/src/main/java/org/linphone/activities/call/CallActivity.kt +++ b/app/src/main/java/org/linphone/activities/call/CallActivity.kt @@ -151,6 +151,13 @@ class CallActivity : ProximitySensorActivity() { super.onPause() } + override fun onDestroy() { + coreContext.core.nativeVideoWindowId = null + coreContext.core.nativePreviewWindowId = null + + super.onDestroy() + } + override fun onUserLeaveHint() { super.onUserLeaveHint() diff --git a/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt b/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt index b5e474843..d0c86f867 100644 --- a/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt +++ b/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt @@ -122,10 +122,14 @@ class OutgoingCallActivity : ProximitySensorActivity() { override fun onStart() { super.onStart() - initNumpadLayout() } + override fun onStop() { + numpadAnimator.end() + super.onStop() + } + override fun onResume() { super.onResume() diff --git a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt index cdd06e718..cbb8cfc85 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt @@ -183,10 +183,14 @@ class ControlsFragment : GenericFragment() { override fun onStart() { super.onStart() - initNumpadLayout() } + override fun onStop() { + numpadAnimator.end() + super.onStop() + } + override fun onRequestPermissionsResult( requestCode: Int, permissions: Array, diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt index beb07dd2f..cb440ed10 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt @@ -233,6 +233,9 @@ class ControlsViewModel : ViewModel() { } override fun onCleared() { + if (corePreferences.enableAnimations) bounceAnimator.end() + optionsMenuAnimator.end() + audioRoutesMenuAnimator.end() coreContext.core.removeListener(listener) super.onCleared() } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt index 1ac9deb24..5a1af8bf3 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt @@ -395,6 +395,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel( } fun destroy() { + accountsSettingsListener = object : SettingListenerStub() {} account.removeListener(listener) } diff --git a/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt b/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt index 961320ba9..605303bbf 100644 --- a/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt @@ -43,12 +43,6 @@ class SideMenuViewModel : ViewModel() { lateinit var accountsSettingsListener: SettingListenerStub - private var accountClickListener = object : SettingListenerStub() { - override fun onAccountClicked(identity: String) { - accountsSettingsListener.onAccountClicked(identity) - } - } - private val listener: CoreListenerStub = object : CoreListenerStub() { override fun onAccountRegistrationStateChanged( core: Core, @@ -71,18 +65,26 @@ class SideMenuViewModel : ViewModel() { } override fun onCleared() { + defaultAccountViewModel.value?.destroy() + accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy) coreContext.core.removeListener(listener) super.onCleared() } fun updateAccountsList() { defaultAccountFound.value = false // Do not assume a default account will still be found + + accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy) val list = arrayListOf() if (coreContext.core.accountList.isNotEmpty()) { val defaultAccount = coreContext.core.defaultAccount if (defaultAccount != null) { val defaultViewModel = AccountSettingsViewModel(defaultAccount) - defaultViewModel.accountsSettingsListener = accountClickListener + defaultViewModel.accountsSettingsListener = object : SettingListenerStub() { + override fun onAccountClicked(identity: String) { + accountsSettingsListener.onAccountClicked(identity) + } + } defaultAccountViewModel.value = defaultViewModel defaultAccountFound.value = true } @@ -90,7 +92,11 @@ class SideMenuViewModel : ViewModel() { for (account in coreContext.core.accountList) { if (account != coreContext.core.defaultAccount) { val viewModel = AccountSettingsViewModel(account) - viewModel.accountsSettingsListener = accountClickListener + viewModel.accountsSettingsListener = object : SettingListenerStub() { + override fun onAccountClicked(identity: String) { + accountsSettingsListener.onAccountClicked(identity) + } + } list.add(viewModel) } } diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt index d6578e55d..e7fb0162b 100644 --- a/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt @@ -101,6 +101,7 @@ class TabsViewModel : ViewModel() { } override fun onCleared() { + if (corePreferences.enableAnimations) bounceAnimator.end() coreContext.core.removeListener(listener) super.onCleared() }