android - Android中的请求队列
问题描述
我对发送简单请求的文档中提供的代码有疑问。
val queue = Volley.newRequestQueue(this)
val url = "https://www.google.com"
// Request a string response from the provided URL.
val stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener<String> { response ->
// Display the first 500 characters of the response string.
textView.text = "Response is: ${response.substring(0, 500)}"
},
Response.ErrorListener { textView.text = "That didn't work!" })
// Add the request to the RequestQueue.
queue.add(stringRequest)
在此代码中,首先向 url 发出请求,然后将 stringRequest 存储在队列中。我的疑问是,在发出请求时我们会得到响应,那么需要将它存储在队列中,然后重新运行所有操作,例如检查缓存内存等。
解决方案
通过以下语句,您可以告诉运行时您想要发出什么样的请求。
val stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener<String> { response ->
// Display the first 500 characters of the response string.
textView.text = "Response is: ${response.substring(0, 500)}"
},
Response.ErrorListener { textView.text = "That didn't work!" })
该请求不会立即执行。为了让它执行,它必须被添加到请求队列中。
换句话说:如果您删除以下行
queue.add(stringRequest)
根本不会提出请求。
Volley 指南中的这些行总结了它的工作原理(强调我的)
要发送请求,您只需构造一个请求并使用 add() 将其添加到 RequestQueue,如上所示。一旦你添加了请求,它就会通过管道移动,得到服务,并解析和传递它的原始响应。
推荐阅读
- python - Seaborn 箱线图在图上截断
- postgresql - tksheet 和 postgresql 数据库(如何从 tksheet 更新数据库)
- reactjs - 为什么显示 flex 对 reactJS 中的 body 没有影响?
- c++ - 使用 Flatbuffers 有效存储来自不同类的 c++ 对象列表的好方法是什么?
- swift - 当通过算法不断改变视图的状态时,如何动态地重新渲染视图?
- java - Java Spring Application - 关于在同一服务器中使用 Shell 脚本在 application-env.properties 文件中分配变量值
- apache-spark - 测试 Sedona VIZ 示例时出错
- python - 如何使它不重复?
- slurm - 在 Slurm 作业脚本中添加 squeue
- vba - Access VBA调用函数在运行时什么都不做