fix Fragment Rx lifecycle

This commit is contained in:
Milos Kozak 2019-08-07 19:44:40 +02:00
parent 858759873a
commit 20859e9662
9 changed files with 75 additions and 27 deletions

View file

@ -41,6 +41,11 @@ class LoopFragment : Fragment() {
Thread { LoopPlugin.getPlugin().invoke("Loop button", true) }.start() Thread { LoopPlugin.getPlugin().invoke("Loop button", true) }.start()
} }
updateGUI()
}
override fun onResume() {
super.onResume()
disposable += RxBus disposable += RxBus
.toObservable(EventLoopUpdateGui::class.java) .toObservable(EventLoopUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -59,11 +64,10 @@ class LoopFragment : Fragment() {
}, { }, {
FabricPrivacy.logException(it) FabricPrivacy.logException(it)
}) })
updateGUI()
} }
override fun onStop() { override fun onPause() {
super.onStop() super.onPause()
disposable.clear() disposable.clear()
} }

View file

@ -44,6 +44,10 @@ class OpenAPSAMAFragment : Fragment() {
} }
updateGUI() updateGUI()
}
override fun onResume() {
super.onResume()
disposable += RxBus disposable += RxBus
.toObservable(EventOpenAPSUpdateGui::class.java) .toObservable(EventOpenAPSUpdateGui::class.java)
@ -63,6 +67,11 @@ class OpenAPSAMAFragment : Fragment() {
}) })
} }
override fun onPause() {
super.onPause()
disposable.clear()
}
private fun updateGUI() { private fun updateGUI() {
OpenAPSAMAPlugin.getPlugin().lastAPSResult?.let { lastAPSResult -> OpenAPSAMAPlugin.getPlugin().lastAPSResult?.let { lastAPSResult ->
openapsma_result.text = JSONFormatter.format(lastAPSResult.json) openapsma_result.text = JSONFormatter.format(lastAPSResult.json)

View file

@ -40,6 +40,10 @@ class OpenAPSMAFragment : Fragment() {
} }
updateGUI() updateGUI()
}
override fun onResume() {
super.onResume()
disposable += RxBus disposable += RxBus
.toObservable(EventOpenAPSUpdateGui::class.java) .toObservable(EventOpenAPSUpdateGui::class.java)
@ -59,6 +63,11 @@ class OpenAPSMAFragment : Fragment() {
}) })
} }
override fun onPause() {
super.onPause()
disposable.clear()
}
fun updateGUI() { fun updateGUI() {
OpenAPSMAPlugin.getPlugin().lastAPSResult?.let { lastAPSResult -> OpenAPSMAPlugin.getPlugin().lastAPSResult?.let { lastAPSResult ->
openapsma_result.text = JSONFormatter.format(lastAPSResult.json) openapsma_result.text = JSONFormatter.format(lastAPSResult.json)

View file

@ -44,7 +44,10 @@ class OpenAPSSMBFragment : Fragment() {
} }
updateGUI() updateGUI()
}
override fun onResume() {
super.onResume()
disposable += RxBus disposable += RxBus
.toObservable(EventOpenAPSUpdateGui::class.java) .toObservable(EventOpenAPSUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -63,6 +66,11 @@ class OpenAPSSMBFragment : Fragment() {
}) })
} }
override fun onPause() {
super.onPause()
disposable.clear()
}
fun updateGUI() { fun updateGUI() {
val plugin = OpenAPSSMBPlugin.getPlugin() val plugin = OpenAPSSMBPlugin.getPlugin()
plugin.lastAPSResult?.let { lastAPSResult -> plugin.lastAPSResult?.let { lastAPSResult ->

View file

@ -45,8 +45,11 @@ class ConfigBuilderFragment : Fragment() {
}, null) }, null)
} }
createViews() updateGUI()
}
override fun onResume() {
super.onResume()
disposable.add(RxBus disposable.add(RxBus
.toObservable(EventConfigBuilderUpdateGui::class.java) .toObservable(EventConfigBuilderUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -57,7 +60,12 @@ class ConfigBuilderFragment : Fragment() {
})) }))
} }
private fun createViews() { override fun onPause() {
super.onPause()
disposable.clear()
}
private fun updateGUI() {
createViewsForPlugins(R.string.configbuilder_profile, R.string.configbuilder_profile_description, PluginType.PROFILE, MainApp.getSpecificPluginsVisibleInListByInterface(ProfileInterface::class.java, PluginType.PROFILE)) createViewsForPlugins(R.string.configbuilder_profile, R.string.configbuilder_profile_description, PluginType.PROFILE, MainApp.getSpecificPluginsVisibleInListByInterface(ProfileInterface::class.java, PluginType.PROFILE))
createViewsForPlugins(R.string.configbuilder_insulin, R.string.configbuilder_insulin_description, PluginType.INSULIN, MainApp.getSpecificPluginsVisibleInListByInterface(InsulinInterface::class.java, PluginType.INSULIN)) createViewsForPlugins(R.string.configbuilder_insulin, R.string.configbuilder_insulin_description, PluginType.INSULIN, MainApp.getSpecificPluginsVisibleInListByInterface(InsulinInterface::class.java, PluginType.INSULIN))
createViewsForPlugins(R.string.configbuilder_bgsource, R.string.configbuilder_bgsource_description, PluginType.BGSOURCE, MainApp.getSpecificPluginsVisibleInListByInterface(BgSourceInterface::class.java, PluginType.BGSOURCE)) createViewsForPlugins(R.string.configbuilder_bgsource, R.string.configbuilder_bgsource_description, PluginType.BGSOURCE, MainApp.getSpecificPluginsVisibleInListByInterface(BgSourceInterface::class.java, PluginType.BGSOURCE))

View file

@ -46,6 +46,10 @@ class AutomationFragment : Fragment() {
fragmentManager?.let { dialog.show(it, "EditEventDialog") } fragmentManager?.let { dialog.show(it, "EditEventDialog") }
} }
}
override fun onResume() {
super.onResume()
disposable += RxBus disposable += RxBus
.toObservable(EventAutomationUpdateGui::class.java) .toObservable(EventAutomationUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -70,8 +74,8 @@ class AutomationFragment : Fragment() {
}) })
} }
override fun onStop() { override fun onPause() {
super.onStop() super.onPause()
disposable.clear() disposable.clear()
} }

View file

@ -37,7 +37,10 @@ class TidepoolFragment : Fragment() {
tidepool_uploadnow.setOnClickListener { RxBus.send(EventTidepoolDoUpload()) } tidepool_uploadnow.setOnClickListener { RxBus.send(EventTidepoolDoUpload()) }
tidepool_removeall.setOnClickListener { RxBus.send(EventTidepoolResetData()) } tidepool_removeall.setOnClickListener { RxBus.send(EventTidepoolResetData()) }
tidepool_resertstart.setOnClickListener { SP.putLong(R.string.key_tidepool_last_end, 0) } tidepool_resertstart.setOnClickListener { SP.putLong(R.string.key_tidepool_last_end, 0) }
}
override fun onResume() {
super.onResume()
disposable.add(RxBus disposable.add(RxBus
.toObservable(EventTidepoolUpdateGUI::class.java) .toObservable(EventTidepoolUpdateGUI::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -53,8 +56,8 @@ class TidepoolFragment : Fragment() {
) )
} }
override fun onStop() { override fun onPause() {
super.onStop() super.onPause()
disposable.clear() disposable.clear()
} }
} }

View file

@ -34,7 +34,6 @@ class NSProfileFragment : Fragment() {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
close.visibility = View.GONE // not needed for fragment close.visibility = View.GONE // not needed for fragment
updateGUI()
nsprofile_profileswitch.setOnClickListener { nsprofile_profileswitch.setOnClickListener {
val name = nsprofile_spinner.selectedItem?.toString() ?: "" val name = nsprofile_spinner.selectedItem?.toString() ?: ""
@ -91,7 +90,11 @@ class NSProfileFragment : Fragment() {
} }
} }
} }
updateGUI()
}
override fun onResume() {
super.onResume()
disposable.add(RxBus disposable.add(RxBus
.toObservable(EventNSProfileUpdateGUI::class.java) .toObservable(EventNSProfileUpdateGUI::class.java)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -103,6 +106,11 @@ class NSProfileFragment : Fragment() {
) )
} }
override fun onPause() {
super.onPause()
disposable.clear()
}
fun updateGUI() { fun updateGUI() {
profileview_noprofile.visibility = View.VISIBLE profileview_noprofile.visibility = View.VISIBLE

View file

@ -84,29 +84,24 @@ class DanaRFragment : Fragment() {
DanaRPump.getInstance().lastConnection = 0 DanaRPump.getInstance().lastConnection = 0
ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("Clicked connect to pump", null) ConfigBuilderPlugin.getPlugin().commandQueue.readStatus("Clicked connect to pump", null)
} }
updateGUI()
disposable += RxBus
.toObservable(EventDanaRNewStatus::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
}
override fun onStop() {
super.onStop()
disposable.clear()
}
override fun onPause() {
super.onPause()
MainApp.bus().unregister(this)
loopHandler.removeCallbacks(refreshLoop)
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
MainApp.bus().register(this) MainApp.bus().register(this)
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs()) loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
activity?.runOnUiThread { updateGUI() } disposable += RxBus
.toObservable(EventDanaRNewStatus::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { FabricPrivacy.logException(it) })
}
override fun onPause() {
super.onPause()
disposable.clear()
MainApp.bus().unregister(this)
loopHandler.removeCallbacks(refreshLoop)
} }
@Subscribe @Subscribe