Skip to content

Commit 8b7a0e8

Browse files
Fix Realm Listener Leak in AchievementFragment
Stores the inline Realm change listener in a variable and removes it in onDestroyView to prevent a memory leak.
1 parent 83a17ba commit 8b7a0e8

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

app/src/main/java/org/ole/planet/myplanet/ui/userprofile/AchievementFragment.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class AchievementFragment : BaseContainerFragment() {
4646
private var _binding: FragmentAchievementBinding? = null
4747
private val binding get() = _binding!!
4848
private lateinit var aRealm: Realm
49+
private lateinit var realmChangeListener: io.realm.RealmChangeListener<Realm>
4950
var user: RealmUserModel? = null
5051
var listener: OnHomeItemClickListener? = null
5152
private var achievement: RealmAchievement? = null
@@ -82,11 +83,14 @@ class AchievementFragment : BaseContainerFragment() {
8283
}
8384

8485
override fun onDestroyView() {
86+
super.onDestroyView()
8587
if (::realtimeSyncListener.isInitialized) {
8688
syncCoordinator.removeListener(realtimeSyncListener)
8789
}
90+
if (::realmChangeListener.isInitialized) {
91+
aRealm.removeChangeListener(realmChangeListener)
92+
}
8893
_binding = null
89-
super.onDestroyView()
9094
}
9195

9296
private fun startAchievementSync() {
@@ -193,11 +197,12 @@ class AchievementFragment : BaseContainerFragment() {
193197

194198
achievement?.let {
195199
updateAchievementUI()
196-
aRealm.addChangeListener {
200+
realmChangeListener = io.realm.RealmChangeListener {
197201
if (isAdded) {
198202
populateAchievements()
199203
}
200204
}
205+
aRealm.addChangeListener(realmChangeListener)
201206
}
202207
}
203208

@@ -303,7 +308,6 @@ class AchievementFragment : BaseContainerFragment() {
303308
customProgressDialog?.dismiss()
304309
customProgressDialog = null
305310
if (this::aRealm.isInitialized && !aRealm.isClosed) {
306-
aRealm.removeAllChangeListeners()
307311
aRealm.close()
308312
}
309313
try {

0 commit comments

Comments
 (0)