KP_*_*KP_ 1 sqlite android greendao
在我的应用程序中,有4个Activities 从活动1到4开始.
Database创建发生在activity1中,值在活动2,活动3等中更新.但是当我回到使用finish()活动3到活动2的活动时,由于缓存,它不会显示更新的值.(无法显示更新的值) )
我试过daosession.clear() ,但它没有清除数据.
那么如何清除旧缓存并重新加载数据GreenDAO.
在所有这些活动中,我使用了单独的会话.参见示例代码
假设当前活动是CaptureLocationDetails类
public static CaptureLocationDetails getInstance()
{
return instance;
}
openHelper = new DevOpenHelper(MyApplication.getInstances());
//openHelper.openDatabase();
db = openHelper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
-----
----
daoSession.getUserDao().update(entity);
Run Code Online (Sandbox Code Playgroud)
然后
GetMap class(下一个活动)
DevOpenHelper openHelper = new DevOpenHelper(MyApplication.getInstances());
db = openHelper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
Run Code Online (Sandbox Code Playgroud)
upPackLinear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
//DaoSession.this.clear();
//daoSession.clear();
finish();
CaptureLocationDetails.getInstance().daoSession.clear();
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我返回CaptureLocationDetails课堂时,它会从缓存中加载值.
你可以用2种方法做到这一点.
startActivityForResult()方法请执行以下步骤.如果感到困惑,您可以查看本教程.
Activity使用startActivityForResult()Override将onActivityResult()在第一Activity.在那里,清除DB缓存并重新获取数据.finish()在第二次Activity打电话之前,打电话setResult().onResume()方法清除数据库缓存并加载数据onResume().
这样每次Activity显示时,都会获取数据.这是无效的,因为每次你Activity来到前台,都onResume()被称为.
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |