Android 内容提供者线程
只是好奇Android 内容提供者线程,android,multithreading,android-contentprovider,Android,Multithreading,Android Contentprovider,只是好奇 getContentResolver().query(...) 我知道加载程序在后台线程上运行查询。这是否也适用于插入、更新和删除?我应该创建异步任务、线程等吗。。。打这种电话? 大型更新可能会阻止我的应用程序的主线程 getContentResolver().insert(...) 谢谢 来自 正在从提供程序检索数据 本节介绍如何使用从提供程序检索数据 以用户字典提供程序为例 为清楚起见,本节中的代码片段调用 “UI线程”上的ContentResolver.query()。但在实
getContentResolver().query(...)
我知道加载程序在后台线程上运行查询。这是否也适用于插入、更新和删除?我应该创建异步任务、线程等吗。。。打这种电话?
大型更新可能会阻止我的应用程序的主线程
getContentResolver().insert(...)
谢谢 来自
正在从提供程序检索数据
本节介绍如何使用从提供程序检索数据
以用户字典提供程序为例
为清楚起见,本节中的代码片段调用
“UI线程”上的ContentResolver.query()。但在实际代码中,
您应该在单独的线程上异步执行查询
要做到这一点,需要使用CursorLoader类,详细信息将对此进行描述
详细信息请参见《加载程序指南》。此外,代码行是代码段
仅;它们不显示完整的应用程序
加载程序仅适用于查询,即加载活动或片段中的数据,而不是插入/更新/删除 除了Loader(自Android3.0以来可用)之外,Android还提供了一个帮助器类(自API级别1以来),用于支持完整CRUD回调的异步CRUD类操作
AsyncQueryHandler与HandlerThread一起工作,用于异步操作,并将结果返回主线程。根据特定要求,使用AsyncTask或简单工作线程也是常用的做法。当您说加载程序在后台线程上运行查询时,您需要了解它是实现在后台线程中执行查询的加载程序类的实例 这样做的结果是,您希望使用或扩展并实现抽象加载器类的子类,而不是使用AsyncTask或Java线程。原因是当您创建加载器时,它希望您返回类型为Loader的实例。Java线程或AsyncTask不能用于此目的。 加载器类的子类通过启动自己的线程来实现这一点。客户端类或创建加载器的类仅初始化加载器。实际的加载器实例可以执行您希望它执行的任何操作。这可以是任何操作-插入、更新、删除等。安卓提供的游标加载器实现在后台线程异步执行并返回结果集。Android不提供用于插入或更新数据的类似本机实现。您可以选择从AsyncTaskLoader(与CursorLoader继承的类相同)进行扩展 另外,请记住,加载程序用于优化数据库访问,因此,只有在完成任务后,才会将结果发布到主线程,而不是在此之前(有一种类似于黑客的解决方法,可以将更新发布到UI线程,但这打破了这种模式)。加载程序只关心完成其工作,不关心提供任何更新
如果您只想异步处理CordServices查询,您可能需要考虑使用Android提供的AcycQuyHuffer-Read类。