我正在使用排球库来执行网络操作。在应用程序启动时,我点击了服务,我想停止所有操作,直到我从服务获得响应。
所以我想同步执行此操作。因为我正在使用Volley,默认情况下在单独的线程中工作。那我怎么能这样做呢。
我已经创建了自定义接口/侦听器来处理这个问题,但是Android提供了一些方法来实现这一点。
我做了以下。
Splash Activity实现了一个接口,并在加载数据后转到Main Activity
@Override
public void onContainerLoaded() {
//startActivity(MainActivity)
}
答案 0 :(得分:1)
即使您愿意,也绝对不能同步运行任何与网络相关的任务。
您可以做的是正常开始您的活动,并使用进度条徽标替换您的布局,当您的任务完成时,该徽标设置为visibility.gone。
编辑:顺便说一句,如果你刚刚启动你的应用程序而你还没有做任何具体的事情,我建议你使用AsyncTask而不是Volley,这通常会导致层错误。答案 1 :(得分:1)
使用某些事件总线,例如Otto
创建一个活动,让您的主要活动使用活动总线订阅活动,开始您的操作,显示一个"正在加载......"或主要活动中的ProgressDialog。从工作线程完成后,将事件发送到主活动。让您的主要活动关闭"加载"收到事件时的对话框,
答案 2 :(得分:1)
我想一个更好的问题就是为什么你想在主线程上强制它?
据我所知,凌空不会让你这样做,但如果你自己做网络操作,你可能会这样做。在Honeycomb之后,您将获得NetworkOnMainThreadException,因此您需要覆盖policies。