android Application类的详细介绍

http://blog.csdn.net/duer8797/article/details/6990965

http://www.2cto.com/kf/201202/118039.html

在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习。

一.先对它的整体概念解释:

在android源码中对他的描述是;

*Baseclassforthosewhoneedtomaintainglobalapplicationstate.Youcan

*provideyourownimplementationbyspecifyingitsnameinyour

*AndroidManifest.xml's<application>tag,whichwillcausethatclass

*tobeinstantiatedforyouwhentheprocessforyourapplication/packageis

*created.

SDK中的描述:Application类是为了那些需要保存全局变量设计的基本类,你可以在AndroidManifest.xml的<application>标签中进行自己的实现,这样的结果是:当你的application或者包被建立的时候将引起那个类被建立。

理解:就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需要再像j2se那样需要创建public权限的static变量,而直接在application中去实现。只需要调用Context的getApplicationContext或者Activity的getApplication方法来获得一个application对象,再做出相应的处理。

例如Launcher模块中;它自己就写了个application,在AndroidManifest.xml中将它进行了设置:

<application

android:name="com.android.launcher2.LauncherApplication"

对于他的设置可以参考这个模块。

二.里面的方法进行说明:

onCreate();

/**

*Calledwhentheapplicationisstarting,beforeanyotherapplication

*objectshavebeencreated.Implementationsshouldbeasquickas

*possible(forexampleusinglazyinitializationofstate)sincethetime

*spentinthisfunctiondirectlyimpactstheperformanceofstartingthe

*firstactivity,service,orreceiverinaprocess.

*Ifyouoverridethismethod,besuretocallsuper.onCreate().

*/

这个函数是当我们的应用开始之时就被调用了,比应用中的其他对象创建的早,这个实现尽可能的快一点,因为这个时间直接影响到我们第一个activity/service

/receiver。如果你要重写这个方法必须调用super.onCreate().

onTerminate():

/**

*Thismethodisforuseinemulatedprocessenvironments.Itwill

*neverbecalledonaproductionAndroiddevice,whereprocessesare

*removedbysimplykillingthem;nousercode(includingthiscallback)

*isexecutedwhendoingso.

*/

这个函数是模拟一个过程环境,在真机中永远也不会被调用。

相关推荐