在另一个活动托管的片段之间传递数据的最佳实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在另一个活动托管的片段之间传递数据的最佳实践相关的知识,希望对你有一定的参考价值。

将数据从Activity传递到片段的最佳方法是什么,但片段由另一个活动托管。

阐述:活动A托管片段A(活动A中的内容)<==活动B.

我已经实现了这一点,但显然,我的做法导致了一些内存泄漏。

一个例子是在活动关闭时刷新片段中包含的RecyclerView,但我不想将它放在onResume中。

活动中包含的界面(不是主机)

public class Activity extends AppCompatActivity{
    public static OnlistenClose delegate;
    public interface OnlistenClose {
        void refreshList();
    }
}

//实现接口的片段

public class FragmentB extends Fragment implements Activity.OnlistenClose{

       Activity.delegate = this;

       @Override
       public void refreshList(){
          //my code
       }
}

使用square / leakcanary表示存在泄漏。

答案

将数据从Activity传递到片段的最佳方法是什么,但片段由另一个活动托管。

最终,您将数据从一个活动传递到另一个活动。如果数据永久存储在数据库或文件中,则接收活动应该在第一个数据更新后读取数据。

另一方面,如果您传递的数据只需要在内存中可用,那么您可以使用Intent传递数据。

如您所见,在另一个活动中保留对一个活动的引用会导致内存泄漏。您尝试使用的回调方法仅对拥有该片段的活动有效,而不适用于第二个活动。相反,您应该尊重活动生命周期并根据需要使用Intents进行通信。

另一答案

一般问题甚至特定情况都没有“最佳实践”。

传递数据的标准方式:

  • Intents
  • Storage 共享首选项 内部存储器 外部存储 SQLite数据库 网络连接
  • 静态类(无需链接)
  • 等等

有很多方法可以完成任务,因为有一些方法可以在句子中描述该任务。

  • 我完成了我的工作。
  • 我完成了我的任务。
  • 它发布在Play商店中。
  • 我受够了。
  • 我没有事儿。

以上是关于在另一个活动托管的片段之间传递数据的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

在 NavigationUI 的同一主机活动上传递数据并更新片段文本/按钮

最佳实践?在活动之间传递参数

Android 在活动之间传递大对象的最佳实践?

更新片段参数的最佳实践?

在一些片段之间填充对象变量的最佳方法

如何将捆绑从一个活动传递到放置在另一个活动中的片段?