• Content Provider的启动过程


    --摘自《Android进阶解密》

    第一步:query方法到AMS的调用过程

    1)ApplicationContentResolver是ContextImpl中的静态内部类,继承自ContentResolver,它在ContextImpl的构造方法中被创建,这说明我们调用ContentResolver的insert、query、update等方法时就会启动Content Provider

    2)IContentProvider是ContentProvider在本地的代理,具体的实现为ContentProvider

    3)ApplicationContentResolver是ContextImpl的静态内部类

    4)ContentProvider相关的数据存储在mProviderMap中,起到缓存的作用,这样使用相同的Content Provider时,就不需要每次都要调用AMS的getContentProvider方法了

    第二步。AMS启动Content Provider的过程

    1)在attachApplicationLocked方法中调用了thread的bindApplication方法,thread是IApplicationThread类型的,这里和IActivityManager一样采用了AIDL,实现bindApplication方法不再是Android 7.0的ApplicationThreadProxy类,而是ApplicationThread类,它是ActivityThread的内部类

    另外:

    Android 8.0四大组件的启动过程与Android 7.0主要区别是,与AMS进行进程间通信时采用的AIDL技术去掉了此前一直沿用的ActivityManagerProxy和ApplicationThreadProxy等代理类

    欢迎关注我的微信公众号:安卓圈

  • 相关阅读:
    C#的第一个应用
    中位数和顺序统计量(第9章)
    散列表的学习和探讨(算法导论第11章)
    数据挖掘和机器学习的基本概念
    Weka数据挖掘——选择属性
    Weka数据挖掘——关联
    Weka数据挖掘——聚类
    Weka数据挖掘——分类
    WEKA-过滤器算法学习
    WEKA——数据挖掘与机器学习工具
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/10179505.html
Copyright © 2020-2023  润新知