java – syncAdapter,服务,加载器,提供程序和asynctask之间的混淆?

前端之家收集整理的这篇文章主要介绍了java – syncAdapter,服务,加载器,提供程序和asynctask之间的混淆?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 android新手,正在阅读文档和一些教程.

服务

开发人员指南说,当需要在后台运行长时间运行的任务时,应该使用它,比如音乐播放器.

的AsyncTask

创建一个工作线程来执行后台任务,比如使用api获取数据,然后通过它的onPostExecute()回调方法通知UI线程.

装载机

在单独的线程上执行操作,向侦听器注册通知数据集更改.

供应商

通过在清单文件中公开数据,在不同应用程序之间共享数据.

SyncAdapter

用于在Android设备和Web服务器之间同步数据.

从理论上讲,我理解上述概念就像它们的用途一样.
我很难把它们整理好像何时使用什么?他们最好用的是什么?在什么情况下应该使用什么?

对于缓存,我使用sqlite或库像volley和retrospice

正如我说的我是android初学者并试图理解这些概念.

任何帮助和建议将不胜感激.
提前谢谢.

解决方法

Kaleb的答案有几点需要补充:

内容提供商:

Android实际上有很多方式来共享数据. ContentProvider是一种在应用程序之间共享数据库方法.假设您的手机上有3个电子邮件客户端,可以在您离线时缓存来自云端的数据.有意义的是,您只维护一个电子邮件的脱机数据库.如果您有地址簿,短信数据库或推文数据库,情况也是如此.如果您想要更新所有数据,情况也是如此.您真的只想从云中更新一次数据,而不是每次更新三次,这将我带到下一个主题SyncAdapter.

SyncAdapter:

SyncManager足够智能,可以一次完成所有同步请求,最大限度地缩短天线供电时间,从而节省电池使用时间.此外,在AccountManager的帮助下,手机用户可以自己覆盖同步首选项,但这只有在开发人员首先选择使用SyncAdapter时才会如此.

此外,SyncAdapter只能与ContentProvider一起使用.因此,即使您不想与其他应用共享数据,如果您想使用SyncAdapter,也必须使用内容提供商.

话虽这么说,ContentProviders对于初学者(甚至是中间开发者)来说非常难以实现.我建议你现在远离他们.你应该使用ContentProvider,如果已经有一个你想要做的,但我不建议你尝试创建自己的.

装载机:

装载机很好.如果要显示本地数据库(或ContentProvider)中的数据,请学习使用它们.他们会节省你的时间.与SyncAdapter不同,加载器不需要ContentProvider即可运行.他们可以直接访问sqlite.

服务:

学会使用它们.关于他们的事情太多了.重要的一点是,您应该通过使用AlarmManager或BroadcastReceivers等组件来最小化它们活着的时间.此外,您还需要了解Service和IntentService之间的区别.

的AsyncTask:

Android中经常需要AsyncTask来避免阻塞主UI线程.不要以为因为您使用的是AsyncTask,您可以免除使用服务.

请注意,许多Android教程仅为您提供了演示概念的最少量代码,因此它们通常会跳过正确的线程.请注意,如果需要,您可以手动启动自己的线程,但AsyncTask会为您执行其他操作,使其成为许多UI线程被阻止并且出现“应用程序无响应”错误的情况的理想选择.

图书馆:

那里有很多好的图书馆.我不会说哪些是好的.学会使用每个人都推荐的那些.这些图书馆可以为你做很多事情(假设你已经足够好让他们工作了).有一点学习曲线,但值得.而且他们在更高的抽象层次上处理Android,所以通常,线程和许多其他事情通常都会照顾你.

还有许多其他事情我要掩盖,或者我根本没有提及,但就像我说的那样,我认为你的问题太宽泛了.如果你真的想要更多细节,你应该蹲下来阅读一些开发者指南并观看谷歌提供的一些YouTube视频.

猜你在找的Java相关文章