【发布时间】:2018-12-07 21:58:15
【问题描述】:
如果我将object 传递给fragment 而不使用bundle 会有什么影响?我刚刚打开了其中一个旧代码并在那里找到了它,并且忍不住问了这个问题,因为我从未尝试过。我也没有发现任何内存泄漏。
这就是它的实现方式-
活动类:
MyFragment fragment =
MyFragment.newInstance(getIntent().getStringExtra(DATA),
instance.getCallback(),
instance.getRequest());
getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit();
片段类:
public class MyFragment extends Fragment {
public MyFragment() {
/* Required empty public constructor */
}
public static MyFragment newInstance(String data, Callback callback,
Request request) {
MyFragment fragment = new MyFragment();
fragment.setCallback(callback);
fragment.setRequest(request);
fragment.setData(data);
return fragment;
}
private void setCallback(Callback callback) {
this.callback = callback;
}
private void setData(Data data) {
this.data = data;
}
private void setRequest(Request request) {
this.request = request;
}
}
总的来说,到目前为止我使用的是Fragment#setArguments(Bundle)
【问题讨论】:
-
如果您使用片段外部的数据,即来自单例类的getter setter,那么显然数据将不是片段的属性。您还必须努力从内存中清除这些数据。
-
谢谢。所以你的意思是在这种情况下存在内存泄漏的机会。我没有得到任何这些。但即使我怀疑内存泄漏也会存在
-
是的,这就是为什么禁止使用静态指针指向任何基于上下文的变量,例如视图、活动等...
标签: android object android-fragments