我试图在网络呼叫完成后调用方法。我尝试过使用LocalBroadcastManager。我最初让它在网络通话完成后发送广播,这很好,直到我有 多个方法等待相同的意图,开始引起问题。
有更好的解决方案还是这是最好的方法?如果是的话,你能指点我可以学习如何深入使用这个或解释它是如何使用的吗?
抱歉,我忘了提到我正在使用Volley Library进行网络通话?
由于
答案 0 :(得分:1)
你正在使用 BroadcastManager 而不是因为android慢循环它在某个时刻多次调用receive方法。你可以找到同样的问题here。
您需要做的是只是为了防止多次调用方法所以请使用上面的链接来提示您的问题,并提示采取标记和处理程序以防止多个调用
答案 1 :(得分:0)
您应该使用回调来等待网络任务完成。 基本思想与onClickListener相同。您传递了一个接口实现,它将在调用回调后执行您想要的任务。 它应该是这样的:
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){
}
}
你可以从NetworkManager
:
//from the AsyncTask when you done with the network stuff
onComplete.onComplete();
如果您必须等待多个来电,可以使用CyclicBarrier
:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CyclicBarrier.html