Most visited

Recently visited

Added in API level 11

Loader

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继承。

Developer Guides

有关使用加载程序的更多信息,请阅读 Loaders开发人员指南。

Summary

Nested classes

class Loader.ForceLoadContentObserver

一个ContentObserver的实现,负责将它连接到Loader,以便在观察者被告知已经改变时让加载器重新加载它的数据。

interface Loader.OnLoadCanceledListener<D>

实现的接口,用于在加载完其数据之前发现加载器何时被取消。

interface Loader.OnLoadCompleteListener<D>

实现该接口以发现Loader何时完成加载其数据。

Public constructors

Loader(Context context)

存储与上下文关联的应用程序上下文。

Public methods

void abandon()

重启加载程序时,通常会通过 LoaderManager自动调用此函数。

boolean cancelLoad()

尝试取消当前加载任务。

void commitContentChanged()

提交您已完全处理由 takeContentChanged()返回的内容更改。

String dataToString(D data)

对于调试,将Loader的数据类的实例转换为可打印的字符串。

void deliverCancellation()

通知注册 Loader.OnLoadCanceledListener负载已被取消。

void deliverResult(D data)

将加载结果发送给注册的侦听器。

void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args)

将Loader的状态打印到给定的流中。

void forceLoad()

强制执行异步加载。

Context getContext()
int getId()
boolean isAbandoned()

返回这个加载器是否被放弃。

boolean isReset()

返回此负载是否已重置。

boolean isStarted()

返回这个加载是否已经开始。

void onContentChanged()

Loader.ForceLoadContentObserver检测到更改时调用。

void registerListener(int id, OnLoadCompleteListener<D> listener)

注册一个在加载完成时将收到回调的类。

void registerOnLoadCanceledListener(OnLoadCanceledListener<D> listener)

注册一个在取消加载时将接收回调的侦听器。

void reset()

这个函数通常会在销毁Loader时由 LoaderManager自动调用。

void rollbackContentChanged()

报告已放弃处理由 takeContentChanged()返回的内容更改,并希望回滚到再次发生待处理内容更改的状态。

final void startLoading()

当相关的片段/活动正在启动时,通常会通过 LoaderManager自动调用此函数。

void stopLoading()

当关联的片段/活动停止时,通常会通过 LoaderManager自动为您调用此函数。

boolean takeContentChanged()

以当前标志指示加载程序的内容在停止时是否已更改。

String toString()

返回对象的字符串表示形式。

void unregisterListener(OnLoadCompleteListener<D> listener)

删除先前添加了 registerListener(int, Loader.OnLoadCompleteListener ) 的侦听 registerListener(int, Loader.OnLoadCompleteListener )

void unregisterOnLoadCanceledListener(OnLoadCanceledListener<D> listener)

取消注册以前添加了 registerOnLoadCanceledListener(Loader.OnLoadCanceledListener ) 的侦听 registerOnLoadCanceledListener(Loader.OnLoadCanceledListener )

Protected methods

void onAbandon()

子类实现这个来照顾被抛弃。

boolean onCancelLoad()

子类必须实现这个来处理 cancelLoad()的请求。

void onForceLoad()

子类必须实现这个来处理 forceLoad()的请求。

void onReset()

按照 reset() ,子类必须实现这个来照顾重置它们的加载器。

void onStartLoading()

按照 startLoading() ,子类必须实现这个以负责加载其数据。

void onStopLoading()

按照 stopLoading() ,子类必须实现此功能以停止加载器。

Inherited methods

From class java.lang.Object

Public constructors

Loader

Added in API level 11
Loader (Context context)

存储与上下文关联的应用程序上下文。 由于Loaders可以用于多个活动,因此直接存储上下文是很危险的。 总是使用getContext()来检索Loader的上下文,不要直接使用构造函数参数。 getContext()返回的getContext()可安全地在各个Activity实例中使用。

Parameters
context Context: used to retrieve the application context.

Public methods

abandon

Added in API level 11
void abandon ()

当重新启动加载程序时,通常会通过LoaderManager自动调用此函数。 当使用装载机LoaderManager ,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 告诉Loader它正在被抛弃。 这被称为在reset()之前使其保留其当前数据但不报告任何新数据。

cancelLoad

Added in API level 11
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.

commitContentChanged

Added in API level 18
void commitContentChanged ()

承诺您已经完全处理了由takeContentChanged()返回的内容更改。 这是与rollbackContentChanged()一起使用以处理负载被取消的情况。 当您完全处理负载而未被取消时调用此函数。

dataToString

Added in API level 11
String dataToString (D data)

对于调试,将Loader的数据类的实例转换为可打印的字符串。 必须处理空数据。

Parameters
data D
Returns
String

deliverCancellation

Added in API level 16
void deliverCancellation ()

通知已注册Loader.OnLoadCanceledListener负载已被取消。 只能由子类调用。 必须从进程的主线程中调用。

deliverResult

Added in API level 11
void deliverResult (D data)

将加载结果发送给注册的侦听器。 只能由子类调用。 必须从进程的主线程中调用。

Parameters
data D: the result of the load

dump

Added in API level 11
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.

forceLoad

Added in API level 11
void forceLoad ()

强制执行异步加载。 startLoading()不同,这将忽略以前加载的数据集并加载新的数据集。 这只需要调用实现的onForceLoad() 通常应该只在加载程序启动时调用它 - 也就是isStarted()返回true。

必须从进程的主线程中调用。

getContext

Added in API level 11
Context getContext ()

Returns
Context an application context retrieved from the Context passed to the constructor.

getId

Added in API level 11
int getId ()

Returns
int the ID of this loader

isAbandoned

Added in API level 11
boolean isAbandoned ()

返回这个加载器是否被放弃。 在这种状态下,加载程序不得报告任何新数据,并且必须保持其上次报告的数据有效,直至最终重置。

Returns
boolean

isReset

Added in API level 11
boolean isReset ()

返回此负载是否已重置。 也就是说,装载机还没有第一次启动,或者它的reset()已经被调用。

Returns
boolean

isStarted

Added in API level 11
boolean isStarted ()

返回这个加载是否已经开始。 也就是说,它的startLoading()已被呼叫,并且尚未拨打stopLoading()reset()

Returns
boolean

onContentChanged

Added in API level 11
void onContentChanged ()

Loader.ForceLoadContentObserver检测到更改时调用。 缺省实现检查加载器是否当前已启动; 如果是这样,它只需调用forceLoad() ; 否则,它会设置一个标志,以便takeContentChanged()返回true。

必须从进程的主线程中调用。

registerListener

Added in API level 11
void registerListener (int id, 
                OnLoadCompleteListener<D> listener)

注册一个在加载完成时将收到回调的类。 该回调将在进程的主线程上调用,因此将结果传递给小部件是安全的。

必须从进程的主线程中调用。

Parameters
id int
listener OnLoadCompleteListener

registerOnLoadCanceledListener

Added in API level 16
void registerOnLoadCanceledListener (OnLoadCanceledListener<D> listener)

注册一个在取消加载时将接收回调的侦听器。 该回调将在进程的主线程上调用,因此将结果传递给小部件是安全的。 必须从进程的主线程中调用。

Parameters
listener OnLoadCanceledListener: The listener to register.

reset

Added in API level 11
void reset ()

这个函数通常会在销毁Loader时由LoaderManager自动调用。 当使用装载机LoaderManager ,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 重置Loader的状态。 装载者应该在这一点上释放所有资源,因为它可能永远不会再被调用; 然而,它的startLoading()稍后可能被调用,它必须能够再次开始运行。

这将更新Loader的内部状态,以便 isStarted()isReset()将返回正确的值,然后调用实现的 onReset()

必须从进程的主线程中调用。

rollbackContentChanged

Added in API level 18
void rollbackContentChanged ()

报告您已经放弃了由takeContentChanged()返回的内容更改处理,并且希望回滚到还有待处理内容更改的状态。 这是为了处理在数据被传送回加载程序之前,由于内容更改而导致的数据加载已被取消的情况。

startLoading

Added in API level 11
void startLoading ()

当关联的片段/活动正在启动时,通常会通过LoaderManager自动为您调用此函数。 当使用装载机LoaderManager ,你一定不要自己调用该方法,否则你将其加载器的管理冲突。 启动加载程序数据的异步加载。 当结果准备好时,回调将在进程的主线程上调用。 如果之前的加载已完成且仍然有效,则结果可能会立即传递给回调。 加载器将监视数据集的来源,并且如果源更改,可能会提供未来的回调。 拨打stopLoading()将停止传送回传。

这会更新Loader的内部状态,以便 isStarted()isReset()将返回正确的值,然后调用实现的 onStartLoading()

必须从进程的主线程中调用。

stopLoading

Added in API level 11
void stopLoading ()

当关联的片段/活动停止时,通常会通过LoaderManager自动为您调用此函数。 当使用LoaderManager的加载程序时,您不得自己调用此方法,否则您将与加载程序的管理发生冲突。

停止传送更新,直到下一次startLoading() 实现应该在这一点上他们的无效数据-客户仍然可以自由使用装载机报告的最后数据。 但是,如果数据发生变化,他们通常会停止报告新数据; 他们仍然可以监视更改,但不能将它们报告给客户端,直到稍后调用startLoading()

这将更新Loader的内部状态,以便 isStarted()将返回正确的值,然后调用实现的 onStopLoading()

必须从进程的主线程中调用。

takeContentChanged

Added in API level 11
boolean takeContentChanged ()

以当前标志指示加载程序的内容在停止时是否已更改。 如果有,则返回true并且标志被清除。

Returns
boolean

toString

Added in API level 11
String toString ()

返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

用于类ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

unregisterListener

Added in API level 11
void unregisterListener (OnLoadCompleteListener<D> listener)

删除先前添加了registerListener(int, Loader.OnLoadCompleteListener ) 的侦听registerListener(int, Loader.OnLoadCompleteListener ) 必须从进程的主线程中调用。

Parameters
listener OnLoadCompleteListener

unregisterOnLoadCanceledListener

Added in API level 16
void unregisterOnLoadCanceledListener (OnLoadCanceledListener<D> listener)

取消注册以前添加了registerOnLoadCanceledListener(Loader.OnLoadCanceledListener ) 的侦听registerOnLoadCanceledListener(Loader.OnLoadCanceledListener ) 必须从进程的主线程中调用。

Parameters
listener OnLoadCanceledListener: The listener to unregister.

Protected methods

onAbandon

Added in API level 11
void onAbandon ()

子类实现这个来照顾被抛弃。 这是一个在onReset()之前的可选中间状态 - 这意味着客户端不再对来自加载程序的任何新数据感兴趣,因此加载程序不得报告任何更新的更新。 然而,加载器必须保持其最后报告的数据有效,直到最终的onReset()发生。 您可以使用isAbandoned()检索当前已放弃的状态。

onCancelLoad

Added in API level 16
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.

onForceLoad

Added in API level 11
void onForceLoad ()

子类必须实现这个来处理对forceLoad()的请求。 这将始终从进程的主线程中调用。

onReset

Added in API level 11
void onReset ()

按照reset() ,子类必须实现此操作来照顾重置其加载程序。 这不是由客户直接调用,而是由于致电reset() 这将始终从进程的主线程中调用。

onStartLoading

Added in API level 11
void onStartLoading ()

按照startLoading() ,子类必须实现这个来负责加载它们的数据。 这不是由客户直接调用,而是由于致电startLoading()

onStopLoading

Added in API level 11
void onStopLoading ()

按照stopLoading() ,子类必须实现此功能以停止加载器。 这不是由客户直接调用,而是由于致电stopLoading() 这将始终从进程的主线程中调用。

Hooray!