`
blueion
  • 浏览: 40305 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android Loaders

 
阅读更多

从3.0开始,Android支持loaders,loaders提供了异步载入数据以及监视数据源的变化的能力。

使用loaders#

初始化Loader#

getLoaderManager().initLoader(  /*loader id*/0, 
                               
/*创建loader时的自定义参数*/null,
                               
/*LoaderManager.LoaderCallbacks*/this);
  • 回调对象需要实现:
    • onCreateLoader()方法,这里需要创建一个新的loader。
    • onLoadFinished()方法,
    • onLoadReset()方法,
  • 如果这个loader的id已经有其他loader使用,则之前的loader会被重用。
  • 如果这个loader的id是新的,系统会调用回调对象中的onCreateLoader()。
  • LoaderManager会管理loader的生命周期,因此创建好loader之后就不需要管它了

重新启动Loader#

当需要抛弃已存在的loader中的数据时,可以重启loader

   getLoaderManager().restartLoader(0, null, this);

创建Loader#

通常在onCreateLoader()方法里创建Loader。一般的Android创建的只有CursorLoader,CursorLoader通过查询ContentProvider返回的cursor提供数据源。

响应onLoadFinished和onLoadReset方法#

  • onLoadFinished在loader载入数据后调用,这个方法会确保在loader最后一次载入的数据释放前调用( This method is guaranteed to be called prior to the release of the last data that was supplied for this loader)
  • onLoadReset这个方法的调用表示loader在重新初始化,之前load的数据已经没有用了

 

自定义Loader#

前面说过Android只提供了CursorLoader一种具体的Loader,我们也可以继承AsyncTaskLoader或者Loader来实现自定义Loader。AsyncTaskLoader提供了在其他线程中载入数据的功能,可扩展性比较好。参考AsyncTaskLoader

 

参考#

Loaders guider

Loader

分享到:
评论

相关推荐

    Android Loaders _ Reloaded

    Android Loaders _ Reloaded,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4165143.html

    RxLoader-Android开发

    将您的可观察对象compose()装入那些可跨活动方向更改缓存的数据而不会泄漏您的活动且不推荐使用的对象。较新的实时数据为此...RxLoader通过在Android Loaders的基础上构建来实现此目的,因此该库是超轻量级的(仅d

    ioncube_loaders_win_nonts_vc15_x86.zip

    在标签 "motionevent" 中,虽然它通常与Android编程中的手势和触摸事件处理相关,但在当前上下文中,这可能是误标记,因为IonCube与Android或Java无关,而是PHP的扩展。不过,如果存在关联,可能是指某个项目或应用...

    android-support-v4-23.0.0.jar

    该库包含了大量类和方法,涵盖了多个领域,如动画、碎片(Fragments)、加载器(Loaders)、通知(Notifications)、网络操作、视图(Views)等。例如,Fragment是Android 3.0(Honeycomb)引入的,但在v4库中,...

    awesome-android-Loaders:很棒的Android Loading动画库的有组织的列表

    Android加载动画库列表 很棒的Android Loading动画库的有组织列表。 指数 载入中 动画圆加载视图 材料 名称 执照 演示版 NumberProgressBar SmoothProgressBar Apache许可证V2 GoogleProgressBar Apache...

    Android example part 2

    5. **LoaderLab**: Loaders是异步加载数据的组件,特别适合处理I/O密集型任务,如从网络或数据库加载数据。LoaderLab可能涵盖ContentProvider、AsyncTaskLoader的使用,以及如何在配置变化时保持Loader状态。...

    android平台libgdx 解析obj文件

    首先,我们需要了解LibGDX中的`com.badlogic.gdx.graphics.g3d.loaders`包,这个包提供了各种模型加载器,包括用于解析OBJ文件的`ObjLoader`类。ObjLoader能够读取OBJ文件的内容并将其转换为LibGDX的内部表示,如`...

    android animation

    5. **加载指示器(Loaders)**:虽然不是直接的动画,但Loader API(如`AsyncTaskLoader`)是处理后台数据加载并提供进度反馈的重要工具。结合适当的动画,可以创建出优秀的加载体验。 在"android各种加载动画源码...

    android多线程管理

    **5.1 Loaders** `Loader`框架是Android 3.0引入的,主要用于数据的异步加载和生命周期管理,如`CursorLoader`用于加载SQLite数据库数据。 **5.2 LiveData & ViewModel** Android Architecture Components提供的`...

    android获取联系人生日信息

    此外,为了提高性能,你还可以考虑使用Loaders或LiveData等工具来异步加载和处理数据。如果你在实际开发中遇到更多复杂情况,例如合并重复的生日信息,或者根据特定条件筛选联系人,你可能需要进一步深入研究Android...

    The Android Developer‘s Cookbook 2nd Edition

    Organizing Android apps and integrating their activities * Working efficiently with services, receivers, and alerts* Managing threads, including advanced techniques using AsyncTasks and loaders* ...

    Android_FriendsCircle

    7. **状态管理**:为了处理数据加载过程中的各种状态(如空数据、加载中、错误),可以使用Loaders或现在流行的Paging Library,它们能帮助我们优雅地处理数据的分页加载和显示。 8. **动画效果**:为了让应用更具...

    android-support-v4.jar

    Google的Android Developer Guide提供了详尽的文档,涵盖了如何使用Fragments、Loaders等关键组件。同时,许多在线课程和论坛(如Stack Overflow)也是学习的好去处,可以解答你在实践中遇到的具体问题。 总结,`...

    android编程权威指南源码

    "35_Loaders"是关于Loader的使用。Loader是异步加载数据的组件,可以避免阻塞UI线程,提供更好的用户体验。源码将教你如何使用CursorLoader加载数据库数据,并在数据改变时自动更新UI。 "09_ListView"是关于...

    Android基础——Tween动画、Drawable动画、Property动画、MaterialDesign动画、Trasition动画

    Material Design动画主要分为过渡动画(Transitions)、触摸反馈(Ripples)和加载指示器(Loaders)等。过渡动画在界面元素之间创建流畅的导航,如进入、退出、滑动等效果。触摸反馈则通过涟漪效果为用户操作提供...

    ez-loaders:一个简单的库,用于消除在 Android 中使用加载器所带来的样板代码

    EzLoaders 大量借鉴如果您不熟悉 Loaders,请阅读的关于加载器的更多信息可以在找到支持EzLoaders 与 Android API 15 及更高版本兼容。用法添加代码EzLoaders 在 maven central 上可用。 对于那些使用 gradle 的人...

Global site tag (gtag.js) - Google Analytics