我在活动中有一个方法,其中一些操作是从非活动类执行的。我想知道非活动类网络操作何时完成,以便我可以再次调用该方法。但是当我调用非活动类时,方法最后会进行。这是我的代码,..
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);
}
};
}
}
答案 0 :(得分: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
}
});
}
答案 1 :(得分:0)
您可以使用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
}
}
};