1、为什么要重写Application类
如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。
那么为什么这样的全局变量就不符合Android的框架架构?
众说纷纭,我理解的是static访问是无法跨进程的。Android中的Activity,Service是可以在各自进程中运行的,用static传递参数到不同进程的Activity、Service时会错。
2、如何使用重写的Application类
Application类在源码上总述这样写道:
Base class for those who need to maintain global application state. You can
provide your own implementation by specifying its name in your
AndroidManifest.xml’s <application> tag, which will cause that class
to be instantiated for you when the process for your application/package is
created.
翻译:当我们需要保持全局变量时,使用这个类。(上文已说明,接着是如何使用这个类)
你可以通过自己取的名字,在 AndroidManifest.xml的application标签内声明并区分这个组件。声明后这个类将会在你的应用程序或者包所在的进程创建的时候,被实例化。
也就是说,使用自定义的Application类的步骤:
1)重写Application类,比如取名MyApplication。主要重写里面的onCreate方法,就是创建的时候,初始化变量的值。
2)修改配置文件ApplicationManifest.xml,将要运行的应用程序AppContext加进去:
<application
android:allowBackup="true"
android:name=".app.AppContext"
3)实例化自定义的Application对象
AppContext app;
app = (AppContext)getApplication();
4)对app的变量进行操作。
【Android个人理解(四)】自定义Application类的使用
原文地址:http://blog.csdn.net/qq_22939165/article/details/45031525