实例:AppListLoader
这篇文章将是我的第四篇,也就是最后一篇该系列的文章。请在评论里面告诉我他们是否实用。前面几篇文章的链接例如以下:
应大众的要求。我已经写了一个演示样例应用演示怎样正确的实现一个自己定义Loader。应用名称为:AppListLoader,它是一个演示应用。能够查询并列出你的Android设备上全部已安装的应用程序。应用已经改动。又一次构建(没有bug)了API Demos里面提供的LoaderCustom.java样例。该应用使用AppListLoader(AsyncTaskLoader的子类)来查询数据,使用LoaderManager来管理Activity/Fragment声明周期中Loader的内容。
AppListLoader注冊了两个BroadcastReceiver用来监听系统范围内的会影响底层数据源的广播(译者注:应用的安装和卸载都会发送广播,而这两个操作都会影响我们须要监听的数据源。所以这句话是这个意思。翻译起来好麻烦)。新安装、更新、移除应用由InstalledAppObserver来负责监听。本地化改变(locale changed)由SystemLocaleObserver负责监听。比如,当用户将语言从英语改为西班牙语,SystemLocaleObserver就会检測到。并通知AppListLoader又一次查询数据。这样程序就行显示每一个应用的西班牙语名称了(假设每一个应用都提供了相应的西班牙语名称)。点击“Change
language”button,然后观察Loader的对于该事件的无缝响应(非常酷,不是吗。!)。
当Loader/LoaderManager有关的事件发生时,Log信息会在Logcat中显示出来。所以当分析Logcat时,记得确保程序正在执行。希望它对你更好的了解Loader和LoaderManager协同工作关系,而且理解Activity/Fragment生命周期对它们的影响。
能够使用应用名称“com.adp.loadercustom”来过滤,以得到更好的结果。
能够通过点击以下的链接从Google Play下载该应用:
源码在GitHub上面可用。下载。导入到Eclipse里面去。做不论什么你想做的改动。
假设这一系列文章实用,请在以下留下你的评论让我知道。一如既往的。请自由提问。
译者注:
两天零碎的时间翻译了四篇文章,收获非常大,同一时候感觉Loader和LoaderManager并非想象的那么难。文章的质量非常高,假设有朋友知道更好的Android有关的文章,请一定要让我知道,独乐乐不如众乐乐。