我正在创建一个Android应用程序,该应用程序目前只有一个活动。此活动调用 api 以获取 JSON 响应并填充片段。收到 JSON 响应后,我将更新数据集并通知适配器。目前,JSON 请求在onCreate
方法中调用。
同样,在每个片段中,我需要从网络加载图像,所以我想知道它是否也应该放在onCreateView
或其他地方?
我很想知道实现这一目标的最佳实践是什么。
最佳做法是在执行网络操作时使用异步事件,因为根据您的服务器响应时间和网络速度,您可能会延迟收到响应并阻止您的 UI,这不好。
我建议您在调用 API 时集成AsyncTask
。
这是一个例子
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... urls) {
try {
//here you make your api call and json parsing
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
protected void onPostExecute(Boolean result) {
}
你在on中调用你的请求像这样创建
JSONAsyncTask task=new JSONAsyncTask();
task.execute();
查看文档以获取更多信息 https://developer.android.com/reference/android/os/AsyncTask
在onCreate中进行网络调用很好,把我的两分钱放进去,我建议你使用这个好习惯。
-研究网络调用并尝试确定需要多少时间以及UI线程是否需要结果,对于长时间操作,不应使用AsyncTask
从文档
理想情况下,AsyncTasks 应该用于短操作(几秒钟) 最多。如果您需要长时间保持线程运行 时间,强烈建议您使用 java.util.并发包,如 Executor、ThreadPoolExecutor 和未来任务。
-永远不要重新发明轮子,您可以使用大量库进行网络操作,例如:
- 改造
- OkHttp
- 截击
- 安卓快速网络
-始终处理错误!没有什么比由某些连接错误引起的无限加载程序更烦人的了,请使用 BroadCast 接收器检查互联网连接