Volley建议我们可以取消 onStop 活动方法中的请求,但 onStop 可能永远不会被调用,官方文档说:
请注意,在内存不足的情况下,可能永远不会调用此方法,在这种情况下,系统没有足够的内存来保持活动进程在调用onPause()方法后继续运行。
所以问题是当没有调用 onStop 方法时,如何保证相关请求可以被取消。
我能找到的唯一解决方案:
取消 onSaveInstance 和 onStop 活动方法中的请求。因为当系统 onSaveInstance 杀死活动时,保证会被调用。
但我怀疑它是否合适。
答案 0 :(得分:0)
使用setRetaininstance(true);
在片段中使用volley调用public class FragmentConnect extends Fragment {
boolean attatched=false;
public FragmentConnect() {
// Required empty public constructor
}
@Override
public void onDetach() {
super.onDetach();
attatched=false;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
attatched=true;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView= inflater.inflate(R.layout.fragment_connect, container, false);
attatched=true;
setRetainInstance(true);
if(savedInstanceState!=null){
}else{
//call while creating fragment
callToServer();
}
return rootView;
}
private void callToServer() {
if(attatched){
//call_volley here
}
}