【发布时间】:2017-07-18 19:19:30
【问题描述】:
我有一些数据存储在数据库中。在这种情况下,应用程序的用户。
我想检索他们的所有信息并放在我的应用程序的布局中,因此我需要在我的布局类的 onCreate 函数中检索数据,以便在您更改为该布局时显示在其上。
我知道 AsyncTask 和 Volley 对我的 API 执行异步请求,但这使得大多数时候不是整个用户都将显示在布局上,因为在呈现布局时尚未检索到他们.
我也进行了搜索,似乎有一些方法(有时似乎是变通方法)可以使 AsyncTask 和 Volley 同步,但它们会阻塞 UIThread。
我知道asynchronous 和synchronous 请求的区别以及为什么第二个请求会阻止应用程序,所以我有一些问题。
- 是否总是建议使用异步请求?
- 如果同步请求不正确,在需要在呈现布局的同时显示从数据库中检索的数据的情况下使用什么?
- 如果我希望这些数据在整个布局类中可用,我该如何处理?我需要在渲染布局时在屏幕上显示数据,但我也想用它做一些东西,所以如果我尝试在 Volley 请求的
onResponse方法之外的任何地方使用它,我总是得到null。作为数据的“预加载”。
提前致谢!
【问题讨论】:
-
您无需延迟渲染布局,直到加载数据。您可以设置布局,显示 ProgressDialog 或类似的内容,直到异步请求完成,然后填充您的布局。
-
@nicobatu 如果我想使用这些数据在相同的布局中使用它,我应该使用全局变量吗?我的意思是,访问已检索到的数据,例如在同一布局上的按钮的 onClick 函数中。
-
API 请求完成回调应该调用一些方法来更新你的 UI。它可以将数据作为参数传递。
-
@nicobatu 那么我应该在检索到数据后重新加载布局吗?
-
您可以在数据仍在检索/更新时显示加载对话框。
标签: android asynchronous android-asynctask android-volley synchronous