Java 网络调用完成后调用方法

Java 网络调用完成后调用方法,java,android,Java,Android,我试图在网络调用完成后调用一个方法。我已经尝试使用LocalBroadcastManager来实现这一点。我最初让它在网络呼叫完成后发送广播,效果很好,直到我 等待相同目的的多个方法开始导致问题 是否有更好的解决方案,或者这是最好的方法?如果是的话,你能给我指一个我可以深入学习如何使用这个或解释它是如何使用的地方吗 对不起,我忘了提到我正在使用Volley Library进行网络呼叫 感谢您使用的是BroadcastManager,因为android在某个时候多次调用receive方法的周期很慢

我试图在网络调用完成后调用一个方法。我已经尝试使用LocalBroadcastManager来实现这一点。我最初让它在网络呼叫完成后发送广播,效果很好,直到我 等待相同目的的多个方法开始导致问题

是否有更好的解决方案,或者这是最好的方法?如果是的话,你能给我指一个我可以深入学习如何使用这个或解释它是如何使用的地方吗

对不起,我忘了提到我正在使用Volley Library进行网络呼叫


感谢您使用的是BroadcastManager,因为android在某个时候多次调用receive方法的周期很慢。你可以发现同样的问题


您需要做的是防止多次调用方法,因此使用上面的链接提示您的问题,提示是使用标志和处理程序防止多次调用。

您应该使用回调来等待网络任务完成。 其基本思想与听众一样。您将传递一个接口实现,一旦调用回调,它将执行您想要的任务。 应该是这样的:

public interface OnComplete {
    void onComplete();
    void onError(String errorMsg);
}
NetworkManager.callServer("serverurl", new OnComplete() {
    @Overwrite        
    void onComplete() {
        //Do your stuff here
    }
    @Overwrite
    void onError(String errorMsg){
    }
}
当您呼叫网络人员时,您应该传递如下实现:

public interface OnComplete {
    void onComplete();
    void onError(String errorMsg);
}
NetworkManager.callServer("serverurl", new OnComplete() {
    @Overwrite        
    void onComplete() {
        //Do your stuff here
    }
    @Overwrite
    void onError(String errorMsg){
    }
}
您可以从网络管理器中调用它:

//from the AsyncTask when you done with the network stuff
onComplete.onComplete();

如果您必须等待多个调用,您可以使用
CyclicBarrier

为此执行异步任务。例如,见