在我的应用中,从活动1到4有4个Activities
。Database
创建在活动1中进行,并且值在活动2,活动3等中进行更新。但是当我使用finish()
从活动3移回活动2到活动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()
方法
请遵循以下步骤。如果感到困惑,则可以查看this教程。
使用Activity
开始第二个startActivityForResult()
Override
第一个onActivityResult()
中的Activity
。在那里,清除数据库缓存并重新获取数据。
在第二个finish()
中调用Activity
之前,请调用setResult()
。
2. onResume()
方法
清除数据库缓存并将数据加载到onResume()
中。
这样,每次显示Activity
时,都将提取数据。这不是很有效,因为每次Activity
进入前台时,都会调用onResume()
。