,因爲我使用的領域,我需要我要訪問數據庫
錯誤每次打開一個境界連接,你只需要爲給定的線程1個打開實例,以訪問數據庫。
保持這種連接在活動開放「似乎沒有必要」,因爲你可能需要進行查詢的適配器
在這種情況下,你可以有活性級領域實例爲「範圍依賴「,你可以通過getSystemService()
通過上下文分享,如果這是你喜歡做的事情。
public class MyActivity extends Activity {
Realm realm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
realm = Realm.getDefaultInstance();
//...
}
@Override
public void onDestroy() {
if(realm != null) {
realm.close();
}
super.onDestroy();
}
...
@Override
public Object getSystemService(String key) {
if("REALM".equals(key)) {
return realm;
}
return super.getSystemService(key);
}
}
public class MyAdapter extends RecyclerView.Adapter<MyModelViewHolder> {
private final Context context;
Realm realm;
RealmResults<MyModel> results;
private final RealmChangeListener listener = new RealmChangeListener() {
@Override
public void onChange(Object element) {
notifyDataSetChanged();
}
}
public MyAdapter(Context context) {
this.context = context;
//noinspection ResourceType
realm = (Realm)context.getSystemService("REALM");
results = realm.where(MyModel.class).findAll();
results.addChangeListener(listener);
}
...
}
因此具有反正打開適配器內的境界的連接。
錯誤
有一些更高的原因,事先獲取的數據集或這僅僅是一個喜好的事?
這是因爲你的適配器只是用來描述如何顯示數據集的元素,而成爲一個也決定它必須顯示的數據的上帝。
儘管公平,但實際上難以從外部管理數據集;東西必須反正持有強烈的參考結果集。所以,當我不真正打擾單元測試性時,我確實在Adapter內部獲得了結果。它確實有效。
這只是一個偏好問題,但IMO混合提取數據並顯示它們似乎將它們耦合得比我在大多數情況下更喜歡的高。 –