关闭活动时重新初始化 Fragment

时间:2021-01-05 14:59:54

标签: android android-fragments android-activity service ondestroy

我有一个带有片段的活动,这个片段中有一张地图和一些标记。 我在后台运行一个服务来改变标记的位置。

每个标记都有一个布尔值“isDrawn”,每当布尔值设置为 false 时,地图就会通过添加绘制标记来更新(我使用 LiveData 来观察标记) 每当我关闭包含片段的 Activity 时,我都会调用 onDestroyView,它将每个标记的 isDrawn 设置为 false。这样,当我再次打开 Activity 时,标记会再绘制一次。所有这些工作正常。

问题是这样的:在 Fragment 中,我可以点击标记,这会打开一个视图,其中有一个按钮可以打开另一个 Activity,当我关闭此 Activity(使用 BackButton)时,如果标记改变了它的位置(通过服务)当我在说活动时,我发现地图上有两个相同的标记。

知道我能做什么吗?当我关闭活动时,我应该删除片段并重新创建它吗?那可能吗?如果是这样,我应该如何进行?

2 个答案:

答案 0 :(得分:0)

您可以在这里尝试 2 个选项

  1. 尝试创建一个静态变量并存储一些标志值。
  2. 借助 isVisible() 或 getUserVisibleHint() 检查 Fragment 是否可见

答案 1 :(得分:0)

您必须使用此方法向地图添加标记。

OPEN_EXISTING

取一个 public final Marker addMarker (MarkerOptions options); 类型的变量并存储它的引用,该引用由 Marker 返回

喜欢

addMarker (MarkerOptions options);