将数据从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 表示存在泄漏。
答案 0 :(得分:1)
将数据从Activity传递到片段的最佳方法是什么,但片段由另一个活动托管。
最终,您将数据从一个活动传递到另一个活动。如果数据永久存储在数据库或文件中,则接收活动应该在第一个数据更新后读取数据。
另一方面,如果您传递的数据只需要在内存中可用,那么您可以使用Intent传递数据。
如您所见,在另一个活动中保留对一个活动的引用会导致内存泄漏。您尝试使用的回调方法仅对拥有该片段的活动有效,而不适用于第二个活动。相反,您应该尊重活动生命周期并根据需要使用Intents进行通信。
答案 1 :(得分:0)