Android 使用改型和OkHTTPClient由于超时而停止下载文件
我正在使用改型下载文件,但几秒钟后下载停止,并给出以下错误“改型给线程暂停超时:110在下载过程中”“或大部分”JavaBinder:!!!失败的BINDER事务!!!(包裹大小=2840),”,如何解决此问题?文件大小可以是5MB、10MB,下载时间可以是任意大小,具体取决于互联网速度。如果延迟,下载不应停止 代码:Android 使用改型和OkHTTPClient由于超时而停止下载文件,android,retrofit,retrofit2,okhttp,Android,Retrofit,Retrofit2,Okhttp,我正在使用改型下载文件,但几秒钟后下载停止,并给出以下错误“改型给线程暂停超时:110在下载过程中”“或大部分”JavaBinder:!!!失败的BINDER事务!!!(包裹大小=2840),”,如何解决此问题?文件大小可以是5MB、10MB,下载时间可以是任意大小,具体取决于互联网速度。如果延迟,下载不应停止 代码: public void run() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
public void run() {
OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.addNetworkInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
try {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.body(new ProgressResponseBody(originalResponse.body(), progressListener))
.build();
}
catch (Exception e) {
e.printStackTrace();
progressListener.onError(e.getCause()+": "+e.getMessage());
}
return chain.proceed(chain.request());
}
});
AppGlobal.Log("usm_fileUrl","baseUrl= "+BASE_URL+" ,fileName= "+fileName);
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
;
Retrofit retrofit = builder.client(httpClient.build()).build();
RetrofitInterface downloadService = retrofit.create(RetrofitInterface.class);
Call<ResponseBody> call = downloadService.downloadFileByUrl(fileName);
this.notificationId = this.mNotification.createNotification(fileTitle,"Downloading...");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, final retrofit2.Response<ResponseBody> response) {
if (response.isSuccessful()) {
Log.d(TAG, "Got the body for the file");
new AsyncTask<Void, Long, Void>() {
@Override
protected Void doInBackground(Void... voids) {
saveToDisk(response.body());
return null;
}
}.execute();
} else {
Log.d(TAG, "Connection failed " + response.errorBody());
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
Log.e(TAG, t.getMessage());
}
});
public void run(){
OkHttpClient.Builder httpClient=新建OkHttpClient.Builder()
.addNetworkInterceptor(新的Interceptor(){
@凌驾
公共响应拦截(链)引发IOException{
试一试{
Response originalResponse=chain.procedure(chain.request());
返回originalResponse.newBuilder()
.body(新的ProgressResponseBody(originalResponse.body(),progressListener))
.build();
}
捕获(例外e){
e、 printStackTrace();
progressListener.onError(e.getCause()+“:”+e.getMessage());
}
返回chain.procedue(chain.request());
}
});
AppGlobal.Log(“usm_fileUrl”,“baseUrl=“+BASE_URL+”,fileName=“+fileName”);
reformation.Builder=新的reformation.Builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
;
改装改装=builder.client(httpClient.build()).build();
RegulationInterface downloadService=Regulation.create(RegulationInterface.class);
Call Call=downloadService.downloadFileByUrl(文件名);
this.notificationId=this.mNotification.createNotification(文件标题,“下载…”);
call.enqueue(新回调(){
@凌驾
公共无效响应(呼叫、最终改装2.响应){
if(response.issusccessful()){
Log.d(标记“获取文件的正文”);
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
saveToDisk(response.body());
返回null;
}
}.execute();
}否则{
Log.d(标记“连接失败”+response.errorBody());
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
t、 printStackTrace();
Log.e(标记,t.getMessage());
}
});
}