日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Loader之一:基本原理

發布時間:2024/1/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Loader之一:基本原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考APIDEMO及http://developer.android.com/guide/components/loaders.html#app


1、Introduced in Android 3.0, loaders make it easy to asynchronously load data in an activity or fragment. Loaders have these characteristics:
They are available to every Activity and Fragment.
They provide asynchronous loading of data.
They monitor the source of their data and deliver new results when the content changes.
They automatically reconnect to the last loader's cursor when being recreated after a configuration change. Thus, they don't need to re-query their data.

2、重要的類及接口

LoaderManager An abstract class associated with an?Activity?or?Fragment?for managing one or more?Loader?instances.?This helps an application manage longer-running operations in conjunction with the?Activity?orFragment?lifecycle; the most common use of this is with a?CursorLoader, however applications are free to write their own loaders for loading other types of data.?

There is only one?LoaderManager?per activity or fragment. But aLoaderManager?can have multiple loaders.
LoaderManager.LoaderCallbacks A callback interface for a client to interact with the?LoaderManager. For example, you use the?onCreateLoader()?callback method to create a new loader.
Loader An abstract class that performs asynchronous loading of data. This is the base class for a loader. You would typically use?CursorLoader, but you can implement your own subclass. While loaders are active they should monitor the source of their data and deliver new results when the contents change.
AsyncTaskLoader Abstract loader that provides an?AsyncTask?to do the work.
CursorLoader A subclass of?AsyncTaskLoader?that queries the?ContentResolver?and returns a?Cursor. This class implements the?Loader?protocol in a standard way for querying cursors, building on?AsyncTaskLoader?to perform the cursor query on a background thread so that it does not block the application's UI. Using this loader is the best way to asynchronously load data from a?ContentProvider, instead of performing a managed query through the fragment or activity's APIs.
3、一般在以下情況使用Loader:

This section describes how to use loaders in an Android application. An application that uses loaders typically includes the following:
An Activity or Fragment.
An instance of the LoaderManager.
A CursorLoader to load data backed by a ContentProvider. Alternatively, you can implement your own subclass of Loader or AsyncTaskLoader to load data from some other source.
An implementation for LoaderManager.LoaderCallbacks. This is where you create new loaders and manage your references to existing loaders.
A way of displaying the loader's data, such as a SimpleCursorAdapter.
A data source, such as a ContentProvider, when using a CursorLoader.


4、LoaderManager有一個內部接口LoaderManager.LoaderCallbacks,這個接口定義了以下方法:
onCreateLoader() — Instantiate and return a new Loader for the given ID.
onLoadFinished() — Called when a previously created loader has finished its load.
onLoaderReset() — Called when a previously created loader is being reset, thus making its data unavailable.
一般而言,用戶不需要直接對Loader進行操作,而是使用此接口的方法,進行間接控制。


5、Loader的一般操作
(1)使用LoaderManager.initLoader()初始化一個Loader,它將直接調用onCreateLoader()方法。
You typically initialize a Loader within the activity's onCreate() method, or within the fragment's onActivityCreated() method. You do this as follows:

getLoaderManager().initLoader(0, null, this);The initLoader() call ensures that a loader is initialized and active. It has two possible outcomes:

  • If the loader specified by the ID already exists, the last created loader is reused.
  • If the loader specified by the ID does not exist, initLoader() triggers the LoaderManager.LoaderCallbacks method onCreateLoader(). This is where you implement the code to instantiate and return a new loader.
(2)初始化完成后,直接調用onLoadFinished()
If at the point of this call the caller is in its started state, and the requested loader already exists and has generated its data, then the system calls onLoadFinished() immediately (during initLoader()), so you must be prepared for this to happen.


總結

以上是生活随笔為你收集整理的Loader之一:基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。