如果我从Activity调用ContentProvider,ContentProvider在哪个线程中运行?
例如。如果Activity被杀死并且在ContentProvider中执行查询会怎样?假设您的网络查询f.ex速度很慢。
最佳答案
如果您的意思是使用ContentResolver调用ContentProvider的正常用例,那么根据我所知,以下是发生的情况:
那么,如果触发query()/insert()/etc的Activity在这些方法调用之一的中间被杀死,会发生什么呢?我不能肯定地说,但我非常有信心ContentProvider中发生的任何事情都会继续,因为ContentProvider进程应该继续进行,但该方法返回后发生的事情我不确定。
我不确定除非您的内容提供商是由网络而不是通常的sqlite db支持的,否则根本不会涉及到慢速网络吗?
说明:
调用ContentProvider函数时有两种可能性(查询/插入/更新/删除/等):
在这两种情况下,都将阻止调用方,直到ContentProvider函数返回为止。与往常一样,请阅读Google和/或AOSP源代码的完整文档。
http://developer.android.com/reference/android/content/ContentProvider.html
http://developer.android.com/guide/topics/providers/content-provider-basics.html
http://developer.android.com/guide/components/processes-and-threads.html
关于android - 哪个线程运行ContentProvider?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3491747/