我的Activity
里面有Fragment
。
在该片段中有RecyclerView
和RecyclerViewAdapter
。
在片段onCreate
我这样做:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("TAGGG", "onCreate: ");
// Database handler
Contract.DbHelper dbHelper = new Contract.DbHelper(getContext());
dERecyclerViewAdapter.setEntries(dbHelper.readAllEntries());
}
每次重新创建Activity
(向上导航,轮换更改)时,都会再次从数据库中读取数据。
存储它的正确方法是什么?
答案 0 :(得分:0)
您可以使用savedInstanceState通过捆绑包存储数据。你可以像这样存储它
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Use the bundle to store data
}
并像这样检索
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState!=null)
{
//Use the savedInstanceState to get the stored result
}
}
希望这有帮助!
答案 1 :(得分:0)
您应该查看CursorLoader
课程。你的情况正是这个课程的目的。
加载器本身可以在配置更改之间保持不变,因此当您调用onCreate
时,如果加载器已经执行了查询,它将只提供已读取的数据,而不是重新查询数据库。
请参阅https://developer.android.com/guide/components/loaders.html
另外http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html