- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我从网络服务下载数据时,我几乎总是使用服务。我将结果存储在数据库中,并使用游标加载器在我的 View 中显示结果。但是在 Google 发布网络库 Volley 之后,我变得有点困惑。 volley 库使用异步任务而不是服务,并且不使用游标。我认为我应该避免异步任务并将我的数据存储在数据库中,以便我可以正确处理方向变化 - 而不会丢失数据并且不需要再次下载数据。
所以我的问题是,什么时候应该使用 Volley 而不是我自己的下载策略?
最佳答案
就我个人而言,过去我发现使用一项服务实现起来很麻烦,但最终结构良好并且是一种良好的一致体验。但是线程性能……难以管理。
服务查询->数据库加载->通知
用户界面启动查询和游标加载 -> 更新用户界面。
对于 volley,很容易跳过之前在服务和数据库中处理的整个组件。
用户界面Volley 请求 -> Volley 响应 -> 更新 ui
但是,根据您尝试显示的数据,甚至可能是您针对以下任何要求查询的服务器,这很快就会崩溃
用户可能会向下滚动并拉入更多页面。然而,当用户返回 Activity 或什至只是简单地旋转时,对 Volley 的调用将仅返回初始页面的结果,除非您特别记住该页面包含的所有其他查询。对于一个旨在更方便的架构来说,这变成了大量的工作。甚至是略有不同的页面,如果用户所做的只是旋转手机,这对用户来说可能是一种不一致的体验。
在本地应用更改然后在任何时候应用到服务器更容易。仅使用 volley,您必须同步进行 REST 更新和重新查询(所有先前的查询)。
Volley 真的很快。但是,它缺乏任何持久性,除了可用的缓存命中率取决于您正在查询的服务器。激进的缓存甚至会使用陈旧的数据对您的应用造成严重破坏。在浏览可能实际引用过去查询中的数据的多个 Activity 时,从本地数据库中提取数据可提供一致且快速的体验。纯粹的 volley 体验可能需要您查询技术上已经从以前的查询中获得的数据,但没有中央数据存储来获取这些数据。
这些天我实际上跳过了服务部分,但其他一切都来自传统架构
UI发起volley查询和游标加载->更新ui
齐发查询 -> 更新数据库 -> 通知
此外,没有什么可以阻止您让 ui ping 一个服务,然后该服务使用 volley...它看起来更传统,将更多的控制逻辑移动到更集中的地方可能是有值(value)的,但事实上它正在运行从“服务”内部实际上没有提供任何技术优势。
希望对您有所帮助。基本上,不要只尝试 Volley ,我试过了,如果这对你有用,那将是一个非常具体和简单的应用程序,希望我已经找出了主要的陷阱。
此外,尽管 robospice 在服务中,但我发现了同样的陷阱......但是...... YMMV
关于android - 带有游标加载器的 Volley 或 Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18043860/
我正在尝试使用游标遍历表: DEClARE @ProjectOID as nvarchar (100) DECLARE @TaskOID as nvarchar (100) DECLARE TaskO
使用 JOprionPane 时,光标出现了一些问题。我将光标设置到 pharent 框架,然后使用这个显示一个对话框: Object[] possibilities = {"ham", "spam"
我想将数据从一个表(原始数据,所有列都是 VARCHAR)复制到另一个表(使用相应的列格式进行格式化)。 为了将数据从 rawdata 表复制到 formatted 表中,我使用游标来识别受影响的行。
我先走了 我 100% 属于集合运算阵营。但是当设置逻辑时会发生什么在整个所需的输入域上进行检索会导致如此大的检索,以至于查询显着减慢,变得缓慢,或者基本上需要无限的时间? 在这种情况下,我将使用可能
为什么我不能这样做?我想从 TABLEA 中搜索大于光标值的最接近的值,对两者执行平均函数并将结果放入 test3 中。我收到错误代码 1054 未知列“Xnearest in 'field list
我希望以下存储例程返回一系列行,但它只返回 1: CREATE PROCEDURE example() BEGIN DECLARE current_id INT;
我有一张代表患者体检的表,它有检查 ID 和患者 ID。 我想逐行浏览表格并获取每个患者 ID 并比较其不同的咨询,看看它是否被视为“new_attack”。我正在处理疟疾疾病,我们认为每个在过去 6
如文档所述here ,我需要声明一个在打开时接受参数的游标。 我的查询类似于: DECLARE cur CURSOR (argName character varying) FOR SELECT *
我正在尝试使用 PostgreSQL 学习基本游标。这是我的脚本: DECLARE cur_employees CURSOR FOR SELECT * FROM employee CLOS
*DELIMITER // create procedure test(OUT l_out INT) begin DECLARE done INT DEFAULT FALSE; declare l_s
来自 psycopg2 文档: When a database query is executed, the Psycopg cursor usually fetches all the record
我正在使用 while 循环遍历游标,然后输出数据库中每个点的经度和纬度值。 出于某种原因,它没有返回光标中的最后一组(或第一个取决于我是否使用 Cursor.MoveToLast)经度和纬度值。 这
不知道有没有人试过全新的PHPStorm 4 , 但我遇到了这个新版本的问题,而我以前的主要版本 (PHPStorm 3) 没有。 基本上,当我单击代码 View 空白处的任意位置时,光标会设置在该位
mysql的存储过程、游标 、事务实例详解 下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考。 其中,涉及到了存储过程、游标(双层循环)、事务。 【说明】:代码
Mysql的存储过程是从版本5才开始支持的,所以目前一般使用的都可以用到存储过程。今天分享下自己对于Mysql存储过程的认识与了解。 一些简单的调用以及语法规则这里就不在赘述,网上有许多例子。这里
我正在使用 SQL Server,我有一个包含 3 列(时间序列)的表 data ,带日期,hour开始,AwardStatus . 大部分奖励状态是随机生成的。有两种选择,授予或未授予。 但是,业务
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
我需要在数据表中设置一个非唯一标识符。这在组内是连续的,即。对于每个组,ID 应从 1 开始,并以 1 为增量递增,直到该组的最后一行。 下表对此进行了说明。 “新 ID”是我需要填充的列。 Uniq
我是一名优秀的程序员,十分优秀!