我想知道这是不是很好的做法,当使用弱引用时,这是一个好主意/坏主意......
创建适配器时,我传递它(因此它可以使用名为" EmailOrdersButton"的接口回调片段)对片段的弱引用:
WeakReference<OrderHistoryListFragment> weakFragment = new WeakReference<OrderHistoryListFragment>(OrderHistoryListFragment.this);
adapter = new OrderHistoryListAdapter(getActivity(), R.layout.order_history_list_item, -1, orderHistory, isInEditMode, weakFragment);
然后在我的适配器构造函数中,我有这个:
public OrderHistoryListAdapter(Context mContext, int resource, int textViewResourceId, List<MOHistory> lastTransactionList, boolean isEditModeEnable, WeakReference weakFragment) {
mInflator = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.resource = resource;
this.context = mContext;
this.lastTransactionList = lastTransactionList;
originalList = this.lastTransactionList;
this.isEditModeEnable = isEditModeEnable;
try {
this.emailButtonCallback = ((EmailOrdersButton) weakFragment.get());
} catch (ClassCastException e) {
throw new ClassCastException("Fragment must implement EmailOrdersButton.");
}
}
将片段的弱引用传递给适配器是不错的做法?我想确保我的应用程序尽可能保持内存效率
答案 0 :(得分:0)
使用弱引用以使片段松散耦合。如果您不使用弱引用,则不会对其进行垃圾回收,因为该片段会保留对它的引用。
只要片段的生命周期在Activity的生命周期内,就不需要使用WeakReference。如果片段的活动时间比活动长,那么您应该使用WeakReference来避免在系统销毁时保留对象图中的Activity。