Java Okhttp3在加载请求之前关闭活动时使应用程序崩溃
一切正常。但我正在加载问题片段,并立即单击“上一步”退出应用程序,而不让请求完成。它使应用程序崩溃。我试着四处看看,但找不到能帮助我防止撞车的修复方法。我附上Java Okhttp3在加载请求之前关闭活动时使应用程序崩溃,java,android,crash,okhttp3,android-runonuithread,Java,Android,Crash,Okhttp3,Android Runonuithread,一切正常。但我正在加载问题片段,并立即单击“上一步”退出应用程序,而不让请求完成。它使应用程序崩溃。我试着四处看看,但找不到能帮助我防止撞车的修复方法。我附上logcat和Questions课程以供参考 logcat 问题课 您必须在onPause()中取消呼叫,因此请以字段的形式进行呼叫: private Call call; 然后将您的loadQuestion()方法更改为: call = client.newCall(request); call.enqueue(new Callback
logcat
和Questions
课程以供参考
logcat
问题课
您必须在
onPause()
中取消呼叫,因此请以字段的形式进行呼叫:
private Call call;
然后将您的loadQuestion()
方法更改为:
call = client.newCall(request);
call.enqueue(new Callback() {
和取消请求:
@Override
public void onPause() {
super.onPause();
if (call != null){
call.cancel();
}
}
由于您确定如果暂停
片段
,请求的响应会使应用程序崩溃(异常
),因此您也可以在类中声明一个布尔值
,如:
private boolean active= true;
然后在您的恢复中
:
@Override
public void onResume() {
super.onResume();
active= true;
}
然后在您的onPause
@Override
public void onPause() {
super.onPause();
active= false;
}
然后在片段的调用onResponse
中添加if
语句:
@Override
public void onResponse(Call call, Response response) throws IOException {
if(active){
//Call your extra code here!
}
}
代码的
onResponse
仍然会从活动中请求很多内容,比如context和getActivity,这些内容可能为空。检查它们是否不为null,然后从那里调用onResponse@Xenolion,如果我不按back键,它们正在工作,只有当我将活动置于暂停状态时才会崩溃。好的,我已经回答了一个有点棘手的解决方案!很抱歉,我应该删除我的评论!
@Override
public void onPause() {
super.onPause();
active= false;
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(active){
//Call your extra code here!
}
}