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修飾,其生命週期延長,在本界面不關閉的時候無法存儲,大大影響數據更新,解決辦法是重新構造對象,不再使用與拿來的對象,或者無特別必要,直接將其寫在回調方法內部。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章