关于应用程序启动i点击服务获取一些数据/提要,如果从此请求获取的数据依赖于大多数应用程序。
我已检查过Google跟踪代码管理器的实施情况。除非时间或网络请求完成,否则他们使用PendingResult
来阻止线程。
我也尝试使用相同的方法,但没有太多关于PendingResult
实际如何工作的教程。我已经完成了以下工作。
if(aManager.getContainer() == null){
PendingResult pending= aManager.init();
pending.await(10, TimeUnit.SECONDS);
}
**In AManager Class**
public PendingResult init(String containerID){
DatabaseHandler db = new DatabaseHandler(context);
fetchType= db.getFetchMode();
this.containerID= containerID;
if(fetchType== 0){
refresh();
}
return null;
}
我正在返回null
,因为我无法理解如何返回PendingResult对象?
on refresh(); 我使用volley
发出网络请求答案 0 :(得分:1)
在调用服务之前,启动带有加载指示符的ProgressDialog。 ProgressDialog将阻止UI。完全执行服务后,您使用eventBus向活动发布一个事件,并从该事件中解除加载指示符。
请参阅以下代码以显示进度对话框:
public static MaterialDialog showProgressDialog(Context context) {
if (null != context) {
MaterialDialog.Builder builder = new MaterialDialog.Builder(context)
.content("Loading...")
.theme(Theme.LIGHT)
.widgetColorRes(color.progress_dialog_theme)
.progress(true, 0);
MaterialDialog dialog = builder.build();
dialog.setCancelable(false);
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.show();
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH
&& event.getRepeatCount() == 0) {
return true;
}
return keyCode == KeyEvent.KEYCODE_MENU;
}
});
return dialog;
}
return null;
}