在我的应用中,从活动1到4开始有4 Activities
。
Database
创建在activity1中进行,值在活动2,活动3等中更新。但当我从活动3回到使用finish()
到活动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);
然后
GetMap
课程(下一个活动)
DevOpenHelper openHelper = new DevOpenHelper(MyApplication.getInstances());
db = openHelper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
upPackLinear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
//DaoSession.this.clear();
//daoSession.clear();
finish();
CaptureLocationDetails.getInstance().daoSession.clear();
}
});
但是当我返回CaptureLocationDetails
类时,它会从缓存中加载值。
答案 0 :(得分:6)
你可以用2种方法做到。
startActivityForResult()
方法请按照以下步骤操作。如果感到困惑,您可以查看this教程。
Activity
startActivityForResult()
Override
第一onActivityResult()
中的Activity
。在那里,清除数据库缓存并重新获取数据。finish()
拨打第二Activity
之前setResult()
。onResume()
方法清除数据库缓存并加载onResume()
。
这样,每次显示Activity
时,都会获取数据。效率不高,因为每次Activity
到达前台时,都会调用onResume()
。
答案 1 :(得分:0)
简单解决方案
1:使用Intent(不通过finish())从一个下一个活动移动到上一个活动
清除旧缓存并加载更新后的值..
希望这有助于某人...... :)