【问题标题】:how to control the Activity method flow till non activity class perform network operation如何控制 Activity 方法流直到非 Activity 类执行网络操作
【发布时间】:2017-10-19 06:19:09
【问题描述】:

我在活动中有一种方法,其中一些操作是从非活动类执行的。我想知道非活动类网络操作何时完成,以便我可以再次调用该方法。但是当我调用非活动类时,该方法最后会转到。这是我的代码,..

public void somemethod(){
            .
            .
            .
            .               
if (condition) {

    new RegenerateToken().generate(DriverActivity.this); // calling non activity class which perform some network operation

    //here i want to know that non activity class has performed the network operation so i can call this method again

    }       
            .
            .
            .


log.d("method","ending");
}

非活动类

public class RegenerateToken {



    public void generate(Context context) {



    ExecuteServerReq executeServerReq = new ExecuteServerReq(context, client, Utilz.URL + "/authenticate", params, true, true);
    executeServerReq.execute();
    executeServerReq.getResponse = new ExecuteServerReq.GetResponse() {

    @Override
    public void onResponse(String objects) {
    Utilz.printLog("RegenerateTokenresponse", objects);


    }
    };

    }


    }

【问题讨论】:

    标签: java android methods controls flow


    【解决方案1】:

    你需要实现一个接口来获取回调

    public class RegenerateToken {
    
    public interface Callback {
        public void onResponce(String data);
    }
    
    public void generate(Context context,final Callback callBack) {
        ExecuteServerReq executeServerReq = new ExecuteServerReq(context, client, Utilz.URL + "/authenticate", params, true, true);
        executeServerReq.execute();
        executeServerReq.getResponse = new ExecuteServerReq.GetResponse() {
    
        @Override
        public void onResponse(String objects) {
            Utilz.printLog("RegenerateTokenresponse", objects);
            callBack.onResponce(objects);
        }};
    }
    }
    

    回调实现

    if(condition) {
        new RegenerateToken().generate(DriverActivity.this, new Callback() {  
            @Override
            public void onResponse(String objects) { //your data do ur processing
            }
        });
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 LocalBroacastManager 在您的应用中发送和接收信息

      public class RegenerateToken {
      
          public void generate(Context context) {
          //your code
              executeServerReq.getResponse = new ExecuteServerReq.GetResponse() {
      
                  @Override
                  public void onResponse(String objects) {
                      Utilz.printLog("RegenerateTokenresponse", objects);
                      Intent intent = new Intent("Respone");
                      if(expected responce){    
                          intent.putExtra("result", "Successful");
                      }
                      else{
                          intent.putExtra("result", "UnSuccessful");     
                      }
                      LocalBroadcastManager.getInstance(this).sendBroadcast(iIntent);
      
                  }
              };
          }
      }
      

      并在您的活动注册并为您的本地广播定义接收器

      @Override
      public void onCreate(Bundle savedInstanceState) {
          ...
          //Register the custom Broadcast "Response"
      
          LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
          new IntentFilter("Response"));
      }
      
      // Our handler for received Intents. This will be called whenever an Intent
      // with an action named "Response" is broadcasted.
      private BroadcastReceiver myMessageReceiver = new BroadcastReceiver() {
      @Override
          public void onReceive(Context context, Intent intent) {
          String response= intent.getStringExtra("result");
          if(response.equals("Successful")){
              //on successful execution
              // call your method again or do whatever you wish
          }else{
              //on otherwise            
          }
        }
      };
      

      【讨论】:

        猜你喜欢
        • 2011-05-16
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多