3

Okhttp とレトロフィットを使用したアプリを作成しました。いくつかの不規則な有線動作を除いて、すべて正常に動作します。このニュース アプリでは、複数のセクションのフィード ダウンロード リクエストをトリガーします。ときどきリクエストが応答を返すことはありません (例外をスローすることさえありません)。

潜在的な容疑者を見つけようとしましたが、何も見つかりませんでした。ddms の「スレッド」から確認できる唯一のことは、多くのスレッドが「モニター」状態にあることです (スクリーンショットを参照してください)。

ここに画像の説明を入力

編集: レトロフィットのための別の通常のスレッドダンプ:

ここに画像の説明を入力

レトロフィット構成は次のとおりです。

public interface ApiService {
    @GET("/feed/get-news-feed/{section}")
    void getNewsArticles(
            @Path("section") String section, 
            Callback<GeneratedNewsEntryList> callback
    );
}

public static ApiService getInstance() {
    if(service == null) {
        OkHttpClient okHttpClient = new OkHttpClient();
        File cacheDir = App.getContext().getCacheDir();
        HttpResponseCache cache = null;
        try {
            cache = new HttpResponseCache(cacheDir, 1024);
        } catch (IOException e) {
            e.printStackTrace();
        }
        okHttpClient.setResponseCache(cache);

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setServer(BASE_URL)
                .setClient(new OkClient(okHttpClient))
                .setErrorHandler(new ErrorHandler() {

                    @Override
                    public Throwable handleError(RetrofitError arg0) {
                        if(arg0.getResponse().getStatus() == 404)
                            return new Exception("Url does not exists");

                        return new Exception(arg0.getMessage());
                    }
                })
                .build();
        service = restAdapter.create(ApiService.class);
    }

    return service;
}

任意のアイデア、誰かが同様の問題を経験していますか?

4

1 に答える 1