SDK接入必备常识——认识Application对象

作者: 分类: 综合 发布时间: 2015-04-19 14:13 65条评论

Application对象和我们之前说的Activity一样,也是android系统中的一个核心组件。当一个Android应用启动的时候,系统会创建一个Application对象来代表该应用。所以,可以看出Application对象和应用是一对一的,那也就是说,在同一个应用中,只可能有一个Application的实例存在

所以,很多时候,我们就可以在Application中存储一些共享数据,或者借助Application来完成多个Activity之间的数据传递。我们可以使用默认的Application,也可以自定义一个Application,然后通过在AndroidManifest.xml的application节点的name属性中设置下,则该应用被创建的时候,就会实例化该自定义的Application,而不是系统默认的Application。

在SDK接入过程中,我们发现,部分SDK是有自定义Application的。通常我们需要直接使用他们的自定义Application,但是如果我们应用里面也有自定义Application,那么我们还需要将我们的自定义Application继承他们的自定义Application。

因为U8SDK的设计,是需要彻底分离具体的SDK和游戏逻辑的解耦,所以,在U8SDK中,我们针对部分渠道SDK对Application的业务要求,增加了一种监听器模式。从而使得,游戏中不再需要关心具体SDK的Application需求,只需要直接使用U8Application或者继承U8Application即可。之前已经写过一篇博客详细说了设计思路,这里不再赘述。

我们通过U8Application来看看Application中都有哪些方法:

可以看到,我们的U8Application继承了Application对象,同时重写了onCreate, attachBaseContext,onConfigurationChanged三个方法。
其中我们要知道:attachBaseContext首先执行然后才会执行onCreate方法。很多有自定义Application的渠道SDK,就是在attachBaseContext方法或者onCreate方法中进行了一些特殊化的操作。

最早之前U8SDK的初始化是放在Activity的onCreate方法中进行的,但是后来考虑到部分SDK的初始化需要放到Application的onCreate方法,而在U8SDK中,具体SDK的初始化参数又需要U8SDK统一读取,所以,我们只能将U8SDK的初始化放在Application的attachBaseContext方法中了。这样,可以保证U8SDK在具体的渠道SDK初始化之前就已经初始化完毕。

U8SDK的初始化也就是从assets目录下加载渠道配置参数,已经实例化具体的渠道SDK插件列表。所以,只要有了Context信息,我们就能够从assets目录下读取了。

关于Android中Context对象,也是一个非常重要又最容易被忽视的对象。关于Context的详细解说,可以看另一篇大声的博客:

http://blog.csdn.net/qinjuning/article/details/7310620

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1559

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
带你装逼带你飞
点击加入