Android片段......在片段完成处理之前使用后退按钮时崩溃,使用导航图和导航控制器

问题描述

我有一个大型应用程序,它使用 navgraph 和 navcontroller 在单个活动中更改片段。 (实际上有多个活动,每个活动都有多个片段,但在本讨论中,只考虑一个具有多个全屏片段的活动)。通过这个应用程序,每个片段都可以进行数据库调用以将数据显示在屏幕上,或者在单击按钮进行一些处理后进行数据库调用。在处理 getResources().getDrawable(android.R.drawable.ic_menu_send) 之类的事情时,通常需要活动或上下文。

如果有人单击片段中的按钮启动数据库读取,然后在读取完成后尝试使用 getResources() 但在片段到达 getResources() 点之前单击了设备后退按钮,则应用程序可能会崩溃)。 此时它给出了一个类似于这样的致命异常: java.lang.IllegalStateException: Fragment ReferAFriendFragment 未附加到上下文。 在 androidx.fragment.app.Fragment.requireContext(Fragment.java:805) 在 androidx.fragment.app.Fragment.getResources(Fragment.java:869)

在上面的例子中,我没有使用 viewmodel,只是在片段的 onCreateView() 中有代码

这可能发生在整个应用程序的许多不同片段中。 所以,我的问题是我们应该如何构建一个应用程序来处理这些情况? 我们是否禁用所有按钮直到所有处理完成?看起来繁琐又极端。
将主要处理放入视图模型并在片段中使用带有观察者的可变实时数据会防止崩溃吗?

在仍有处理尚未完成(并且可能有回调或观察者)的情况下,如何处理从片段导航离开的人的正确方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)