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修饰,其生命周期延长,在本界面不关闭的时候无法存储,大大影响数据更新,解决办法是重新构造对象,不再使用与拿来的对象,或者无特别必要,直接将其写在回调方法内部。