Fixed a few leaks identified by LeakCanary
This commit is contained in:
parent
4297a4e557
commit
03e4415b5c
7 changed files with 36 additions and 10 deletions
|
@ -151,6 +151,13 @@ class CallActivity : ProximitySensorActivity() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
coreContext.core.nativeVideoWindowId = null
|
||||||
|
coreContext.core.nativePreviewWindowId = null
|
||||||
|
|
||||||
|
super.onDestroy()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onUserLeaveHint() {
|
override fun onUserLeaveHint() {
|
||||||
super.onUserLeaveHint()
|
super.onUserLeaveHint()
|
||||||
|
|
||||||
|
|
|
@ -122,10 +122,14 @@ class OutgoingCallActivity : ProximitySensorActivity() {
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
|
|
||||||
initNumpadLayout()
|
initNumpadLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onStop() {
|
||||||
|
numpadAnimator.end()
|
||||||
|
super.onStop()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
||||||
|
|
|
@ -183,10 +183,14 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
|
|
||||||
initNumpadLayout()
|
initNumpadLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onStop() {
|
||||||
|
numpadAnimator.end()
|
||||||
|
super.onStop()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onRequestPermissionsResult(
|
override fun onRequestPermissionsResult(
|
||||||
requestCode: Int,
|
requestCode: Int,
|
||||||
permissions: Array<out String>,
|
permissions: Array<out String>,
|
||||||
|
|
|
@ -233,6 +233,9 @@ class ControlsViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
|
if (corePreferences.enableAnimations) bounceAnimator.end()
|
||||||
|
optionsMenuAnimator.end()
|
||||||
|
audioRoutesMenuAnimator.end()
|
||||||
coreContext.core.removeListener(listener)
|
coreContext.core.removeListener(listener)
|
||||||
super.onCleared()
|
super.onCleared()
|
||||||
}
|
}
|
||||||
|
|
|
@ -395,6 +395,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun destroy() {
|
fun destroy() {
|
||||||
|
accountsSettingsListener = object : SettingListenerStub() {}
|
||||||
account.removeListener(listener)
|
account.removeListener(listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,12 +43,6 @@ class SideMenuViewModel : ViewModel() {
|
||||||
|
|
||||||
lateinit var accountsSettingsListener: SettingListenerStub
|
lateinit var accountsSettingsListener: SettingListenerStub
|
||||||
|
|
||||||
private var accountClickListener = object : SettingListenerStub() {
|
|
||||||
override fun onAccountClicked(identity: String) {
|
|
||||||
accountsSettingsListener.onAccountClicked(identity)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val listener: CoreListenerStub = object : CoreListenerStub() {
|
private val listener: CoreListenerStub = object : CoreListenerStub() {
|
||||||
override fun onAccountRegistrationStateChanged(
|
override fun onAccountRegistrationStateChanged(
|
||||||
core: Core,
|
core: Core,
|
||||||
|
@ -71,18 +65,26 @@ class SideMenuViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
|
defaultAccountViewModel.value?.destroy()
|
||||||
|
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||||
coreContext.core.removeListener(listener)
|
coreContext.core.removeListener(listener)
|
||||||
super.onCleared()
|
super.onCleared()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateAccountsList() {
|
fun updateAccountsList() {
|
||||||
defaultAccountFound.value = false // Do not assume a default account will still be found
|
defaultAccountFound.value = false // Do not assume a default account will still be found
|
||||||
|
|
||||||
|
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||||
val list = arrayListOf<AccountSettingsViewModel>()
|
val list = arrayListOf<AccountSettingsViewModel>()
|
||||||
if (coreContext.core.accountList.isNotEmpty()) {
|
if (coreContext.core.accountList.isNotEmpty()) {
|
||||||
val defaultAccount = coreContext.core.defaultAccount
|
val defaultAccount = coreContext.core.defaultAccount
|
||||||
if (defaultAccount != null) {
|
if (defaultAccount != null) {
|
||||||
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
||||||
defaultViewModel.accountsSettingsListener = accountClickListener
|
defaultViewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
|
override fun onAccountClicked(identity: String) {
|
||||||
|
accountsSettingsListener.onAccountClicked(identity)
|
||||||
|
}
|
||||||
|
}
|
||||||
defaultAccountViewModel.value = defaultViewModel
|
defaultAccountViewModel.value = defaultViewModel
|
||||||
defaultAccountFound.value = true
|
defaultAccountFound.value = true
|
||||||
}
|
}
|
||||||
|
@ -90,7 +92,11 @@ class SideMenuViewModel : ViewModel() {
|
||||||
for (account in coreContext.core.accountList) {
|
for (account in coreContext.core.accountList) {
|
||||||
if (account != coreContext.core.defaultAccount) {
|
if (account != coreContext.core.defaultAccount) {
|
||||||
val viewModel = AccountSettingsViewModel(account)
|
val viewModel = AccountSettingsViewModel(account)
|
||||||
viewModel.accountsSettingsListener = accountClickListener
|
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
|
override fun onAccountClicked(identity: String) {
|
||||||
|
accountsSettingsListener.onAccountClicked(identity)
|
||||||
|
}
|
||||||
|
}
|
||||||
list.add(viewModel)
|
list.add(viewModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,7 @@ class TabsViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
|
if (corePreferences.enableAnimations) bounceAnimator.end()
|
||||||
coreContext.core.removeListener(listener)
|
coreContext.core.removeListener(listener)
|
||||||
super.onCleared()
|
super.onCleared()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue