ContentProvider的执行时机

简介: ContentProvider的执行时机

这里先给出源码分析的结论:

ContentProvider 的 onCreate() 方法先于 Application 的 onCreate() 方法执行,晚于Application的onAttachContext()方法执行。

 

├── ActivityThread.handleBindApplication
    ├── LoadedApk.makeApplication
        ├── Instrumentation.newApplication
            ├── Instrumentation.newApplication
                ├── (Application)clazz.newInstance() //调用构造方法
                ├── Application.attach
                    ├── Application.attachBaseContext //调用attachBaseContext方法
    ├── ActivityThread.installContentProviders
        ├── ActivityThread.installProvider
            ├── ContentProvider.attachInfo
                ├── ContentProvider.attachInfo
                    ├── ContentProvider.onCreate  // 调用 ContentProvider的onCreate方法
    ├── Instrumentation.callApplicationOnCreate
        ├── Application.onCreate  //调用Application的onCreate方法
结论:

调用顺序: Application 构造方法 –> Application.attachBaseContext –> ContentProvider.onCreate –> Application.onCreate –> Activity.onCreate

相关文章
|
缓存 网络协议 安全
49. 【Android教程】HTTP 使用详解
49. 【Android教程】HTTP 使用详解
414 1
|
XML Java 项目管理
java maven 和gradle哪种好
java maven 和gradle哪种好
420 0
|
6月前
|
Java API 数据安全/隐私保护
访问修饰符 public private protected 及默认情况的区别解析
在Java编程中,访问修饰符(`public`、`private`、`protected`和默认)用于控制类、方法、字段及构造函数的访问范围。`public`允许所有类访问;`private`仅限类内部访问;`protected`允许同一包内或子类访问;默认(无修饰符)仅限同一包内访问。通过合理使用这些修饰符,可实现数据封装、提高安全性和代码可维护性。了解它们的区别与应用场景,是掌握Java面向对象编程的关键。
1161 6
|
人工智能 API PHP
快速接入通义千问
快速接入通义千问
1440 2
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
448 0
|
存储 Prometheus 运维
Prometheus监控系统中常见技术问题处理指南
本文档是Prometheus使用指南,主要针对用户在使用过程中可能遇到的技术问题提供解决方案。
1690 2
|
调度 开发者 UED
Kotlin 中的协程是什么?
【8月更文挑战第31天】
1428 1
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
361 0
|
监控 Linux 数据处理
lslocks:Linux系统中的锁信息查看利器
`lslocks`是Linux工具,用于查看系统上的文件锁信息,帮助诊断进程同步问题。它显示持有锁的进程、锁类型(如POSIX、flock)和状态。通过简洁的输出,用户能识别死锁和资源争用,优化性能。结合其他命令如`grep`和`awk`可增强分析能力。需适当权限运行,定期监控以预防并发访问问题,处理死锁时要谨慎。
|
Java 编译器
Java Annotation Processor(一)
Java Annotation Processor
689 0