2017-05-19 10 views
2

私はいくつかの操作が非アクティビティクラスから実行されるアクティビティで1つのメソッドを持っています。私は非活動クラスのネットワーク操作が完了したので、そのメソッドを再び呼び出すことができるかどうかを知りたいです。しかし、私は非アクティビティクラスを呼び出すと、メソッドは最後に行きます。ここに私のコードです..非アクティビティクラスがネットワーク操作を実行するまでのアクティビティメソッドの流れを制御する方法

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); 


    } 
    }; 

    } 


    } 

答えて

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 
     } 
    }); 
} 
0

を取得するためのインタフェースを実装する必要がありますLocalBroacastManを使用することができます送受信情報をアプリ内で

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    
    } 
    } 
}; 
を受信機を定義するためのエージャー
関連する問題