使用GreenDAO清除缓存中的数据

KP_*_*KP_ 1 sqlite android greendao

在我的应用程序中,有4个Activities 从活动1到4开始.

Database创建发生在activity1中,值在活动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);
Run Code Online (Sandbox Code Playgroud)

然后

GetMap class(下一个活动)

DevOpenHelper openHelper = new DevOpenHelper(MyApplication.getInstances());
    db = openHelper.getWritableDatabase();
    daoMaster = new DaoMaster(db);
    daoSession = daoMaster.newSession();
Run Code Online (Sandbox Code Playgroud)

----

 upPackLinear.setOnClickListener(new OnClickListener() {

        @Override
          public void onClick(View v)
        {

            //DaoSession.this.clear();


            //daoSession.clear();
            finish();

            CaptureLocationDetails.getInstance().daoSession.clear();

        }
    });
Run Code Online (Sandbox Code Playgroud)

但是当我返回CaptureLocationDetails课堂时,它会从缓存中加载值.

Suf*_*ian 6

你可以用2种方法做到这一点.

1. startActivityForResult()方法

请执行以下步骤.如果感到困惑,您可以查看教程.

  1. 开始你的第二次Activity使用startActivityForResult()
  2. OverrideonActivityResult()在第一Activity.在那里,清除DB缓存并重新获取数据.
  3. finish()在第二次Activity打电话之前,打电话setResult().

2. onResume()方法

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

  • 这样每次Activity显示时,都会获取数据.这是无效的,因为每次你Activity来到前台,都onResume()被称为.