GreenDao保存final修饰的对象导致存储不及时的问题

GreenDao保存final修饰的对象导致存储不及时的问题

本人android菜鸟一枚,高手勿入。

最近写项目的时候用到GreenDao存贮数据,存储完毕后关闭界面,主界面读取数据并刷新,中途遇到问题,就是界面刷新不及时,数据库存储数据应该是很快的啊,最后终于发现了问题,直接上代码。

public class User{
    String name;
    int age; 
}
pubic void setData(User mUser){
    final User user= new User();
    user.name=mUser.name; //这里是可以再修改的

    Api.service(getApplicationContext()).sendImChatMessage(user).enqueue(new Callback<String>() {
      @Override
      public void onResponse(Call<String> call, Response<Integer> response) {
        if (response.isSuccessful() && response.body() != null) {
            int age=response.body;
            user.age=age;
            //存储到本地数据库  
            dao.insert(user); //最终发现只有在页面关闭的时候才能存储进去
        }
      }
    }
}

但是最后发现只有当当前界面关闭的时候,数据才存储的进去,这里一切都是final惹的祸,被final修饰的user可以修改其属性值,只是user对象的地址值不变就OK,但是使用 GreenDao存储的时候,由于被final修饰,其生命周期延长,在本界面不关闭的时候无法存储,大大影响数据更新,解决办法是重新构造对象,不再使用与拿来的对象,或者无特别必要,直接将其写在回调方法内部。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值