这是涉及跨越我称之为“Hello World Gulf”的问题之一我在“Hello world”上我可以使用SQLite和内容提供商(以及解析器)但我现在需要交叉到另一个我不能假设onUpgrade会很快。
现在我的第一本书(Wrox,专业Android 4开发 - 我没有选择它因为专业,我之所以选择它是因为Wrox就像导演的O'Reilly - O'Reilly吮吸导游,他们是参考书)只是简单地介绍了使用Loader
s,所以我做了一些搜索,更多的阅读等等。
我基本上总结了一个Loader
只不过是一个包装器,它只是在不同的线程上做事情,并给你一个回调(在那个工作线程上)来处理事情,它给你3步骤,启动查询,使用查询结果,以及重置查询。
这看起来很薄,所以问题1:
为什么我要使用Loader
s?
我觉得我可能会错过你看到的东西,大多数像Android这样的“实用工具”非常有用,如果你可以这么说,并且正如我所说装载机看起来像一个非常薄的包装,它们迫使我拥有回调名称可能会变得乏味,因为有多个查询正在进行中
http://developer.android.com/reference/android/content/Loader.html
阅读指出“他们应该监控数据并根据变化采取行动” - 这听起来很棒,但实际上并不是很明显(我正在考虑数据库表)
演示
这应该如何改变我的应用程序的外观?在活动创建后的一段时间之后,我应该放一个加载旋转的东西(我不确定名称,之前从不需要它们)吗?因此片段是空白的,但是如果X时间过去没有加载器报告回来,我会显示一个多刺的东西?
其他操作
加载器对于更新显然毫无用处,因此,它们的名称单独告诉了一个,所以任何讨厌的更新都必须由我自己的系统包装,以便将工作分流到工作线程。这进一步让我想知道为什么我想要装载机?
我认为我的答案是 某种类型的包装器(在某种程度上,内容提供者或其他方面)在工作线程上执行操作将意味着升级发生在该线程上,这解决了问题,因为......好吧,这不在主线程上。
如果我自己编写,我可以(如果我愿意)确保查询以特定顺序发生,使用我自己的数据结构(而不是Bundle
)似乎我有更好的控制。
我真正想要的是
讨论,我发现当一个人知道为什么事情就是这样,一个人犯错的时候会更少,而且通常会更有信心,我确信存在Loader
存在的原因,并且会有一些模式所有的Android都适合我,我想知道为什么会这样。
示例:
适配器(对于ListViews)并不是很明显如何跟踪行(插入)为什么必须指定默认样式(以及ArrayAdapter使用toString的原因)大部分时间(根据我的经验,我敢说)是子类,阅读源代码让人们了解了Adapter必须实际做什么,然后我挑战自己“我能想到一个满足这些要求的(更好的)系统”,通常(并且希望)我对此的回答收敛于它是如何实际完成的。
因此,“Hello World Gulf”越过了。
我期待阅读有关此事的答案和任何相关的文字墙。
答案 0 :(得分:0)
你不应该直接使用Loaders,而是使用LoaderManager