我很好奇是否有人可以解释ContentProvider的生命周期。我特别感兴趣的是,在何时以及在什么情况下提供者被销毁。 the documentation似乎没有涵盖这一点。
this article的ContentProvider部分讨论了难以获得的文档,但它包含了一个指向Google网上论坛讨论的链接,谷歌的工程师对此做了快速回复,并指出“内容提供商永远不会被销毁。”在他们的整个过程中存在。“
好吧,也许ContentProvider可以和它的进程一样长寿,但它的进程有多长?假设我有一个提供ContentProvider的应用程序,而另一个应用程序的查询是我创建ContentProvider进程的唯一原因(即,还没有运行的Activity或Service。)该进程是否真的会无限期地继续运行?当Android资源不足时,它会破坏服务等组件。当资源紧张时,ContentProviders是否也不会被摧毁?
答案 0 :(得分:7)
我特别感兴趣的是,在何时以及在什么情况下提供者被销毁
它是在您的进程启动时创建的(甚至在创建Application
对象之前),它一直存在直到进程终止。
它的过程有多长?
根据应用,用户和设备的情况而有所不同。
这个过程会继续无限期地运行吗?
没有
当系统资源不足时,Android会破坏服务等组件。
不,它没有。当系统在RAM上运行不足时,Android会终止进程。
当资源紧张时,ContentProviders是否也不会被摧毁?
包含ContentProvider
的进程可以终止,无论是由于内存条件低,年龄大,用户操作等原因。
答案 1 :(得分:0)
内容提供商没有特定的生命周期,您无能为力 控制它。该框架管理内容提供者(进程)的创建和销毁。
当进程外部的外部客户端或组件向Content Provider发出请求时,该请求将在提供程序所在进程的线程池的线程中处理。当没有更多请求时,该进程可以是如果该流程中没有更多活动组件(活动,服务),则回收。但这是Android的决定。