likes
comments
collection
share

每日一题:Android Application为什么是单例

作者站长头像
站长
· 阅读数 9

在android面试中,我们常会遇到Framework面试相关问题,而今天要分享的就是Android Application为什么是单例?

其主要考察的是程序员对 Application 的创建这块的源码是否熟悉。

问题正解:

从源码层面来说下application凭什么是单例,我们查看下Application 对象的创建过程,找出它为什么是单例的原因。 所以我们直接来看Application是怎么一步步创建的。

handleBindApplication
// ActivityThread.java
private void handleBindApplication(AppBindData data) {
    Application app;
    
    // 创建 Application 对象的代码
    app = data.info.makeApplication(data.restrictedBackupMode, null);
}
makeApplication
// LoadedApk.java
public Application makeApplication(boolean forceDefaultAppClass,
            Instrumentation instrumentation) {
    // 如果 mApplication 不等于空,则直接返回
    if (mApplication != null) {
        return mApplication;
    }    

    // 创建 Application对象通过反射
    app = mActivityThread.mInstrumentation.newApplication(
                    cl, appClass, appContext);    
}

从上面代码可知,当 Application为空的时候,才会创建,从而保证了它是一个单例对象。这道题相对简单,就是考察大家是否了解application的创建流程。

Application是一个单例,即每一个app启动的时候都会创建一个Application的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个Context,Application也像Activity一样有自己的生命周期,但是它并没有那么复杂,因为Application只在打开app,确切的说是启动app的时候才会创建,所以说可以在application创建的时候对app全局进行一些配置,比如配置插件

今日分享到此结束,下期更精彩~

关注公众号:Android老皮 解锁  《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版

内容如下

1.Android车载应用开发系统学习指南(附项目实战) 2.Android Framework学习指南,助力成为系统级开发高手 3.2023最新Android中高级面试题汇总+解析,告别零offer 4.企业级Android音视频开发学习路线+项目实战(附源码) 5.Android Jetpack从入门到精通,构建高质量UI界面 6.Flutter技术解析与实战,跨平台首要之选 7.Kotlin从入门到实战,全方面提升架构基础 8.高级Android插件化与组件化(含实战教程和源码) 9.Android 性能优化实战+360°全方面性能调优 10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 🤔

转载自:https://juejin.cn/post/7252499099328413754
评论
请登录