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

问题描述 投票:-2回答:2

将数据从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表示存在泄漏。

android interface
2个回答
1
投票

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

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

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

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


0
投票

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

传递数据的标准方式:

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

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

  • 我完成了我的工作。
  • 我完成了我的任务。
  • 它发布在Play商店中。
  • 我受够了。
  • 我没有事儿。
© www.soinside.com 2019 - 2024. All rights reserved.