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;
}
任意のアイデア、誰かが同様の問題を経験していますか?