为什么networkboundresource无法在房间中保存响应?

时间:2018-07-06 14:10:32

标签: android retrofit2 dao android-room

当我运行我的应用程序时,这就是使用Android Studio的logcat中的okhttp日志拦截器进行的改造所返回的结果。就像您可以看到它成功一样。但是,以下对MovieEntity的响应未保存在Room db中。我正在使用Google aac样本中的networkboundresource

下面是从logcat看到的API响应

Content-Type: text/html; charset=UTF-8 07-06 14:51:36.903 25341-25383/cash.cash D/OkHttp: {"error":"","content":[{"entity_id":"4603326542018531006","timestamp":"1530010493","actor_no":"5080326212018421006","target_no":"5080326212018421006","actor_name":"nattab juli","target_name":"nattab ,"category_id":"22959","category_name":"Vehicles and transport","product_name":"Toyota Highlander 2017","product_features":"Low fuel consumption. Stylish design","product_is_new":"1","standard_price":"150000000","price_negotiable":"0","quantity_available":"1","commission_payable":"100000","picture_id":"28636"} ],"headers":[] } <-- END HTTP (17796-byte body)

当我使用Chrome /检查时,可以看到该表是用所有列创建的,但是响应数据没有保存到房间。 logcat不包含任何错误或指向任何类。我问在什么情况下会 由于返回了响应,APIRepository的movieDao.saveMovies(item.getResults());无法将上述响应保存到会议室。

我怀疑这是应该保存响应的networkboundresource的APIRepository的部分代码。

public LiveData<Resource<List<CouponEntity>>> loadPopularMovies() {
        return new NetworkBoundResource<List<CouponEntity>, MoviesResponse>() {

            @Override
            protected void saveCallResult(@NonNull MoviesResponse item) {
                movieDao.saveMovies(item.getResults());
            }

            @NonNull
            @Override
            protected LiveData<List<CouponEntity>> loadFromDb() {
                **return movieDao.loadMovies();**
            }

            @NonNull
            @Override
            protected Call<MoviesResponse> createCall() {
                return apiServices.loadMovies();
            }
        }.getAsLiveData();
    }
    public LiveData<CouponEntity> getMovie(int id) {
        return movieDao.getMovie(id);
    }

0 个答案:

没有答案