和Context相关联的类,除了ContextImpl还有ContextWrapper、ContextThemeWrapper和Activity等等,下面给出Context的关系图。 从图中我们可以看出,ContextImpl和ContextWrapper继承自Context,ContextThemeWrapper、Service和Application继承自ContextWrapper。ContextWrapper和ContextThemeWrapper都是Context的包装类,它们都含有Context类型的mBase...
和Context相关联的类,除了ContextImpl还有ContextWrapper、ContextThemeWrapper和Activity等等,下面给出Context的关系图。 从图中我们可以看出,ContextImpl和ContextWrapper继承自Context,ContextThemeWrapper、Service和Application继承自ContextWrapper。ContextWrapper和ContextThemeWrapper都是Context的包装类,它们都含有Context类型的mBase...
2.Query App 先启动,并通过 ContentResolver 调用 Provider App 进行 query(需要注明:ApplicationContext 为 null 和 Query App 调用 query 并无关系) 起初没注意到 TelephonyProvider 和 Phone 同进程的特性,所以 DEMO 怎么也复现不了。接下来我们在 FW 里深入分析下: 为什么共用进程的 Provider App 拿不到 Appli...
首先Activity.this和getApplicationContext()返回的不是同一个对象,一个是当前Activity的实例,一个是项目的Application的实例,这两者的生命周期是不同的,它们各自的使用场景不同,this.getApplicationContext()取的是这个应用程序的Context,它的生命周期伴随应用程序的存在而存在;而Activity.this取的是当前Activity的Context,...
(51,51,51); font-family:Arial; line-height:26px">在仔细看一下上图:Activity、Service、Application都是继承自ContextWrapper,而ContextWrapper内部会包含一个base context,由这个base context去实现了绝大多数的方法。
根据上面所介绍的,实现Context的只有Contextimpl类,其它是对context的包装,最终调用的还是的Contextimpl类,所以Activity,application,service 创建的时候肯定要创建一个ContextImpl对象,赋值给 Activity,application,service 中的context。口说无凭,跟着源码来看。
(51,51,51); font-family:Arial; line-height:26px">在仔细看一下上图:Activity、Service、Application都是继承自ContextWrapper,而ContextWrapper内部会包含一个base context,由这个base context去实现了绝大多数的方法。
新进程启动后,首先会执行ActivityThread.main函数,在 thread.attach()方法中会通过Binder机制调用AMS的attachApplication方法,实际上就是通知AMS 新进程已创建好,并将自己的IBinder发布到AMS中。 publicstaticvoidmain(String[]args){...Looper.prepareMainLooper();ActivityThread thread=newActivityThread();thread.attach...
获取应用程序的上下文:通过Context,可以获取应用程序的上下文,如获取ApplicationContext,用于在整个应用程序中共享数据或执行全局操作。 访问系统服务:通过Context,可以访问各种系统服务,如获取系统级的服务(如传感器服务、位置服务)、访问设备功能(如摄像头、存储器)、执行网络操作等。
一般情况下,能使用 Application 的 Context 尽量使用它的,因为它的生命周期更长。 Context 之间使用的是装饰者设计模式,其中 Context 是一个抽象的类。ContextWrapper 内部实际使用 ContextImpl 实现的,因此所有的逻辑基本是在 ContextImpl 中实现的。然后对于 ContextThemeWrapper,它在 ContextWrapper 的基础之上又进行了...