public class Loader
extends Object
java.lang.Object | |
↳ | android.content.Loader<D> |
Known Direct Subclasses |
Known Indirect Subclasses |
一个执行异步数据加载的类。 在装载机处于活动状态时,它们应监视其数据来源并在内容更改时提供新的结果。 详情请参阅LoaderManager
。
关于线程的注意事项:加载器的客户端应该通常从其进程的主线程(即Activity回调和其他事件发生的线程)上执行对Loader的任何调用。 Loader的子类(例如AsyncTaskLoader
)通常会在单独的线程中执行其工作,但是在传递结果时也应该在主线程中完成。
一般子类必须实现至少 onStartLoading()
, onStopLoading()
, onForceLoad()
,并 onReset()
。
大多数实现不应该直接从这个类派生,而是从 AsyncTaskLoader
继承。
有关使用加载程序的更多信息,请阅读 Loaders开发人员指南。
Nested classes |
|
---|---|
class |
Loader.ForceLoadContentObserver 一个ContentObserver的实现,负责将它连接到Loader,以便在观察者被告知已经改变时让加载器重新加载它的数据。 |
interface |
Loader.OnLoadCanceledListener<D> 实现的接口,用于在加载完其数据之前发现加载器何时被取消。 |
interface |
Loader.OnLoadCompleteListener<D> 实现该接口以发现Loader何时完成加载其数据。 |
Public constructors |
|
---|---|
Loader(Context context) 存储与上下文关联的应用程序上下文。 |
Protected methods |
|
---|---|
void |
onAbandon() 子类实现这个来照顾被抛弃。 |
boolean |
onCancelLoad() 子类必须实现这个来处理 |
void |
onForceLoad() 子类必须实现这个来处理 |
void |
onReset() 按照 |
void |
onStartLoading() 按照 |
void |
onStopLoading() 按照 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
Loader (Context context)
存储与上下文关联的应用程序上下文。 由于Loaders可以用于多个活动,因此直接存储上下文是很危险的。 总是使用getContext()
来检索Loader的上下文,不要直接使用构造函数参数。 由getContext()
返回的getContext()
可安全地在各个Activity实例中使用。
Parameters | |
---|---|
context |
Context : used to retrieve the application context. |
void abandon ()
当重新启动加载程序时,通常会通过LoaderManager
自动调用此函数。 当使用装载机LoaderManager
,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 告诉Loader它正在被抛弃。 这被称为在reset()
之前使其保留其当前数据但不报告任何新数据。
boolean cancelLoad ()
尝试取消当前加载任务。 必须在流程的主线程上调用。
取消不是立即操作,因为加载是在后台线程中执行的。 如果当前正在进行加载,则此方法要求取消加载,并注意到这种情况; 一旦后台线程完成其工作,其剩余状态将被清除。 如果在此期间有另一个加载请求进入,它将一直保持到取消的加载完成。
Returns | |
---|---|
boolean |
Returns false if the task could not be canceled, typically because it has already completed normally, or because startLoading() hasn't been called; returns true otherwise. When true is returned, the task is still running and the Loader.OnLoadCanceledListener will be called when the task completes. |
void commitContentChanged ()
承诺您已经完全处理了由takeContentChanged()
返回的内容更改。 这是与rollbackContentChanged()
一起使用以处理负载被取消的情况。 当您完全处理负载而未被取消时调用此函数。
String dataToString (D data)
对于调试,将Loader的数据类的实例转换为可打印的字符串。 必须处理空数据。
Parameters | |
---|---|
data |
D
|
Returns | |
---|---|
String |
void deliverCancellation ()
通知已注册Loader.OnLoadCanceledListener
负载已被取消。 只能由子类调用。 必须从进程的主线程中调用。
void deliverResult (D data)
将加载结果发送给注册的侦听器。 只能由子类调用。 必须从进程的主线程中调用。
Parameters | |
---|---|
data |
D : the result of the load |
void dump (String prefix, FileDescriptor fd, PrintWriter writer, String[] args)
将Loader的状态打印到给定的流中。
Parameters | |
---|---|
prefix |
String : Text to print at the front of each line. |
fd |
FileDescriptor : The raw file descriptor that the dump is being sent to. |
writer |
PrintWriter : A PrintWriter to which the dump is to be set. |
args |
String : Additional arguments to the dump request. |
void forceLoad ()
强制执行异步加载。 与startLoading()
不同,这将忽略以前加载的数据集并加载新的数据集。 这只需要调用实现的onForceLoad()
。 通常应该只在加载程序启动时调用它 - 也就是isStarted()
返回true。
必须从进程的主线程中调用。
Context getContext ()
Returns | |
---|---|
Context |
an application context retrieved from the Context passed to the constructor. |
boolean isAbandoned ()
返回这个加载器是否被放弃。 在这种状态下,加载程序不得报告任何新数据,并且必须保持其上次报告的数据有效,直至最终重置。
Returns | |
---|---|
boolean |
boolean isReset ()
返回此负载是否已重置。 也就是说,装载机还没有第一次启动,或者它的reset()
已经被调用。
Returns | |
---|---|
boolean |
boolean isStarted ()
返回这个加载是否已经开始。 也就是说,它的startLoading()
已被呼叫,并且尚未拨打stopLoading()
或reset()
。
Returns | |
---|---|
boolean |
void onContentChanged ()
当Loader.ForceLoadContentObserver
检测到更改时调用。 缺省实现检查加载器是否当前已启动; 如果是这样,它只需调用forceLoad()
; 否则,它会设置一个标志,以便takeContentChanged()
返回true。
必须从进程的主线程中调用。
void registerListener (int id, OnLoadCompleteListener<D> listener)
注册一个在加载完成时将收到回调的类。 该回调将在进程的主线程上调用,因此将结果传递给小部件是安全的。
必须从进程的主线程中调用。
Parameters | |
---|---|
id |
int
|
listener |
OnLoadCompleteListener
|
void registerOnLoadCanceledListener (OnLoadCanceledListener<D> listener)
注册一个在取消加载时将接收回调的侦听器。 该回调将在进程的主线程上调用,因此将结果传递给小部件是安全的。 必须从进程的主线程中调用。
Parameters | |
---|---|
listener |
OnLoadCanceledListener : The listener to register. |
void reset ()
这个函数通常会在销毁Loader时由LoaderManager
自动调用。 当使用装载机LoaderManager
,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 重置Loader的状态。 装载者应该在这一点上释放所有资源,因为它可能永远不会再被调用; 然而,它的startLoading()
稍后可能被调用,它必须能够再次开始运行。
这将更新Loader的内部状态,以便 isStarted()
和 isReset()
将返回正确的值,然后调用实现的 onReset()
。
必须从进程的主线程中调用。
void rollbackContentChanged ()
报告您已经放弃了由takeContentChanged()
返回的内容更改处理,并且希望回滚到还有待处理内容更改的状态。 这是为了处理在数据被传送回加载程序之前,由于内容更改而导致的数据加载已被取消的情况。
void startLoading ()
当关联的片段/活动正在启动时,通常会通过LoaderManager
自动为您调用此函数。 当使用装载机LoaderManager
,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 启动加载程序数据的异步加载。 当结果准备好时,回调将在进程的主线程上调用。 如果之前的加载已完成且仍然有效,则结果可能会立即传递给回调。 加载器将监视数据集的来源,并且如果源更改,可能会提供未来的回调。 拨打stopLoading()
将停止传送回传。
这会更新Loader的内部状态,以便 isStarted()
和 isReset()
将返回正确的值,然后调用实现的 onStartLoading()
。
必须从进程的主线程中调用。
void stopLoading ()
当关联的片段/活动停止时,通常会通过LoaderManager
自动为您调用此函数。 当使用LoaderManager
的加载程序时,您不得自己调用此方法,否则您将与加载程序的管理发生冲突。
停止传送更新,直到下一次startLoading()
。 实现不应该在这一点上他们的无效数据-客户仍然可以自由使用装载机报告的最后数据。 但是,如果数据发生变化,他们通常会停止报告新数据; 他们仍然可以监视更改,但不能将它们报告给客户端,直到稍后调用startLoading()
。
这将更新Loader的内部状态,以便 isStarted()
将返回正确的值,然后调用实现的 onStopLoading()
。
必须从进程的主线程中调用。
boolean takeContentChanged ()
以当前标志指示加载程序的内容在停止时是否已更改。 如果有,则返回true并且标志被清除。
Returns | |
---|---|
boolean |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
用于类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void unregisterListener (OnLoadCompleteListener<D> listener)
删除先前添加了registerListener(int, Loader.OnLoadCompleteListener
的侦听registerListener(int, Loader.OnLoadCompleteListener
。 必须从进程的主线程中调用。
Parameters | |
---|---|
listener |
OnLoadCompleteListener
|
void unregisterOnLoadCanceledListener (OnLoadCanceledListener<D> listener)
取消注册以前添加了registerOnLoadCanceledListener(Loader.OnLoadCanceledListener
的侦听registerOnLoadCanceledListener(Loader.OnLoadCanceledListener
。 必须从进程的主线程中调用。
Parameters | |
---|---|
listener |
OnLoadCanceledListener : The listener to unregister. |
void onAbandon ()
子类实现这个来照顾被抛弃。 这是一个在onReset()
之前的可选中间状态 - 这意味着客户端不再对来自加载程序的任何新数据感兴趣,因此加载程序不得报告任何更新的更新。 然而,加载器必须保持其最后报告的数据有效,直到最终的onReset()
发生。 您可以使用isAbandoned()
检索当前已放弃的状态。
boolean onCancelLoad ()
子类必须实现这个来处理cancelLoad()
的请求。 这将始终从进程的主线程中调用。
Returns | |
---|---|
boolean |
Returns false if the task could not be canceled, typically because it has already completed normally, or because startLoading() hasn't been called; returns true otherwise. When true is returned, the task is still running and the Loader.OnLoadCanceledListener will be called when the task completes. |
void onReset ()
按照reset()
,子类必须实现此操作来照顾重置其加载程序。 这不是由客户直接调用,而是由于致电reset()
。 这将始终从进程的主线程中调用。
void onStartLoading ()
按照startLoading()
,子类必须实现这个来负责加载它们的数据。 这不是由客户直接调用,而是由于致电startLoading()
。
void onStopLoading ()
按照stopLoading()
,子类必须实现此功能以停止加载器。 这不是由客户直接调用,而是由于致电stopLoading()
。 这将始终从进程的主线程中调用。