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

10-08 09:10
查看更多