zoukankan      html  css  js  c++  java
  • ContentProvider工作过程

    ContentProvider启动过程(通过query方法触发)

    ContentProvider.acquireProvider-->

    ApplicationContentResolver.acquireProvider-->

    ActivityThread.acquireProvider-->

    ActivityManagerService.startProcessLocked-->

    ActivityThread.main-->

    ActivityThread.attach-->

    ActivityManagerService.attachApplication-->

    ActivtiyManagerService.attachApplicationLocked-->

    ApplicationThread.bindApplicatoin-->

    ActivityThread.handleBindApplication-->

    handleBindApplication完成了Application的创建以及ContentProvider的创建,四个步骤

    1)创建ContextImpl和Instrumentation

    2)创建Application对象

    3)启动当前进程的ContentProvider并调用其onCreate方法

    4)调用Application的onCreate方法

    No1:

    ContentProvider所在进程启动时,ConentProvider会同时启动并将发布到AMS中。

    这个时候ContentProvider的onCreate要先于Application的onCreate而执行。

    No2:

    可以认为ContentProvide都是单实例的

    No3:

    访问ContentProvider需要通过ContentResolver,ContentResolver是一个抽象类,通过Context的getContentResolver方法获取的实际上是ApplicationContentResolver对象,ApplicationContentResolver类继承了ContentResolver并实现了ContentResolver中的抽象方法。

    No4:

    其他应用通过AMS来访问ContentProvider(实际是ContentProvider的Binder对象IContentProvider),而IContentProvider的实现者实际上是ContentProvider.Transport。因此其他应用调用IContentProvider的query方法最终会以进程间通信的方式调用ContentProvider.Transport的query方法。然后调用的就是ContentProvider的query方法,query方法的执行者再通过Binder返回给调用者,这样一来整个调用过程就完成了。

  • 相关阅读:
    onSaveInstanceState和onRestoreInstanceState()
    Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
    又优化了一下 Android ListView 异步加载图片
    ListView异步加载图片
    SpannableString 设置一段文字中部分字体颜色
    Android Studio apk 打包流程
    svn分支开发与主干合并(branch & merge)
    SVN使用教程之——分支、合并
    XMPP协议实现原理介绍
    监听器
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8317726.html
Copyright © 2011-2022 走看看