使用GreenDAO清除缓存中的数据

时间:2014-05-27 13:11:00

标签: android sqlite greendao

在我的应用中,从活动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类时,它会从缓存中加载值。

2 个答案:

答案 0 :(得分:6)

你可以用2种方法做到。

1. startActivityForResult()方法

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

  1. 使用Activity
  2. 开始您的第二个startActivityForResult()
  3. Override第一onActivityResult()中的Activity。在那里,清除数据库缓存并重新获取数据。
  4. finish()拨打第二Activity之前
  5. ,请致电setResult()
  6. 2. onResume()方法

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

    • 中的数据
    • 这样,每次显示Activity时,都会获取数据。效率不高,因为每次Activity到达前台时,都会调用onResume()

答案 1 :(得分:0)

简单解决方案

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

清除旧缓存并加载更新后的值..

希望这有助于某人...... :)