Android Fragment:用于Web服务调用的生命周期方法

sil*_*war 5 android android-fragments

我正在开发一个涉及几个片段的应用程序.在每个片段中,我必须调用Web服务来获取数据.

目前我从Fragment的onCreateView()方法调用Web服务.问题无论何时进行Web服务调用并且如果更改了设备方向,我都会收到新的Web服务调用开始调用.

我想这可能是因为onCreateView()方法在配置更改时被调用.

我该怎么解决这个问题.我应该使用哪种生命周期方法来调用Web服务,以便只调用一次

sil*_*war 2

我已经通过以下解决方法解决了这个问题

  1. 为每个 Web 服务调用方法创建操作标识符。例如,用于登录调用的“身份验证”

  2. 创建一个 ArrayList 对象,例如 currentTasks

    ArrayList<String> currentTasks = new ArrayList<String>();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在我调用 Web 服务的每个方法中,检查相应方法的操作标识符是否已存在于 ArrayList 中。如果没有则开始操作。

    String operationId = "Authentication";
    if(currentTasks.indexOf(operationId) == -1)
    {
      <do web service call operation here>
       currentTasks.add(operationId);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 接收上述操作响应的方法,从 ArrayList 中删除操作标识符

     if(currentTasks.indexOf("Authentication") != -1){
        currentTasks.remove("Authentication");
     }
    
    Run Code Online (Sandbox Code Playgroud)

这将确保调用不会转到当前正在进行的 Web 方法。

我知道这不是实现它的最佳方法,也可能不是要遵循的最佳实践,但目前这对我有用。