使用 GreenDAO 从缓存中清除数据



在我的应用程序中,从活动 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()方法

请按照以下步骤操作。如果感到困惑,您可以查看本教程。

  1. 使用startActivityForResult()开始您的第二Activity
  2. Override第一Activity中的onActivityResult() .在那里,清除数据库缓存并重新获取数据。
  3. finish()呼叫第 2 Activity 之前,请呼叫setResult()

2. onResume()方法

  • 清除数据库缓存并在onResume()中加载数据。

  • 这样,每次Activity出现时,都会获取数据。它效率不高,因为每次您的Activity出现在前台时,都会调用onResume()

简单的解决方案是

1:只需使用 Intent(不通过 finish(( 从下一个活动移动到上一个活动(

它清除旧缓存并加载更新的值。

希望这对某人有所帮助..:)

相关内容

  • 没有找到相关文章

最新更新