如何保证无论活动是否被系统停止或杀死,凌空请求总是可以取消?

时间:2016-06-23 10:15:47

标签: android android-volley

Volley建议我们可以取消 onStop 活动方法中的请求,但 onStop 可能永远不会被调用,官方文档说:

  

请注意,在内存不足的情况下,可能永远不会调用此方法,在这种情况下,系统没有足够的内存来保持活动进程在调用onPause()方法后继续运行。

所以问题是当没有调用 onStop 方法时,如何保证相关请求可以被取消。

我能找到的唯一解决方案:
取消 onSaveInstance onStop 活动方法中的请求。因为当系统 onSaveInstance 杀死活动时,保证会被调用。 但我怀疑它是否合适。

1 个答案:

答案 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
         }
    }