在我的应用程序中,从活动 1 到 4 开始有 4 个Activities
。
Database
创建在活动 1 中进行,值在活动 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);
然后
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
类时,它从缓存中加载值。
您可以使用 2 种方法。
1. startActivityForResult()
方法
请按照以下步骤操作。如果感到困惑,您可以查看本教程。
- 使用
startActivityForResult()
开始您的第二Activity
-
Override
第一Activity
中的onActivityResult()
.在那里,清除数据库缓存并重新获取数据。 - 在
finish()
呼叫第 2Activity
之前,请呼叫setResult()
。
2. onResume()
方法
-
清除数据库缓存并在
onResume()
中加载数据。 -
这样,每次
Activity
出现时,都会获取数据。它效率不高,因为每次您的Activity
出现在前台时,都会调用onResume()
。
简单的解决方案是
1:只需使用 Intent(不通过 finish(( 从下一个活动移动到上一个活动(
它清除旧缓存并加载更新的值。
希望这对某人有所帮助..:)