繁体   English   中英

正确地使用onUpgrade(和内容提供者)来处理更新而不阻塞主线程,“ Loader”是否毫无意义?

[英]Correctly using onUpgrade (and content providers) to handle updates without blocking the main thread, are `Loader`s pointless?

这是涉及跨越所谓的“ Hello World Gulf”的问题之一,我在“ Hello world”中可以使用SQLite和内容提供程序(和解析程序),但现在我需要越过另一面,我无法假设onUpgrade将很快。

现在我要读的书(Wrox,专业的Android 4开发-我没有选择它是因为专业,我之所以选择它是因为Wrox就像指南的O'Reilly-O'Reilly吸吮指南,它们都是参考书)仅简要介绍了使用Loader的过程,因此我进行了一些搜索,更多的阅读等等。

我已经基本得出结论, Loader只不过是一个包装程序,它只是在另一个线程上执行操作,并为您提供了一个回调(在该工作线程上)以处理内容,它为您提供了3个步骤,启动查询,使用查询的结果,并重置查询。

这似乎很薄,所以问题1:

为什么要使用Loader

我觉得我可能会遗漏一些您看到的东西,如果您使用谷歌的话,大多数类似Android的“实用程序”都非常有用,正如我所说的,Loaders看起来很薄,并且它们迫使我进行回调名称可能会变得乏味,因为存在多个查询

http://developer.android.com/reference/android/content/Loader.html

阅读中指出“他们应该监视数据并根据更改采取行动”-听起来不错,但实际上如何实现尚不明确(尽管我正在考虑数据库表)

介绍

这应该如何改变我的应用程序的外观? 在创建活动后一定时间后,是否应该放置一个旋转的东西(我不确定名称,以前从未用过)? 因此该片段是空白的,但是如果X时间过去了而没有加载程序报告,我会显示出一个棘手的东西吗?

其他作业

装载程序显然对更新毫无用处,仅它们的名字就可以说明一个问题,因此任何讨厌的更新等都必须由我自己的系统包装才能将工作分流到工作线程。 这进一步使我想知道为什么还要装载机?

我认为我的回答是 ,在工作线程上执行某种包装(某种程度上是从内容提供程序或其他级别),这意味着升级是在该线程上进行的,这解决了问题,因为...主线程。

如果我确实编写自己的代码,则可以(如果愿意)确保查询按特定顺序发生,使用我自己的数据结构(而不​​是Bundle ),似乎可以更好地控制。

我真正在寻找什么

讨论中,我发现当人们知道为什么事情是这样的时候,犯错的机会减少了,并且总体上更有信心,我确信Loader的存在是有原因的,并且所有Android都会采用某种模式,我想知道为什么会这样。

例:

适配器(用于ListViews)并不清楚如何跟踪行(插入)为什么在大多数时候(以我的经验,我敢说)它必须是子类,为什么必须指定默认样式(以及为什么ArrayAdapter使用toString),阅读源代码可以使您理解适配器实际必须执行的操作,然后挑战自己“我可以考虑一个满足这些要求的(更好的)系统”,通常(并希望)我对此的回答集中在其实际工作上完成。

这样,“ Hello World Gulf”就越过了。

我期待阅读有关此问题的答案和任何链接的文本墙。

您不应该直接使用Loader,而应该使用LoaderManager

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM