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.
*/
这个函数是模拟一个过程环境,在真机中永远也不会被调用。