Android Application类的介绍
来源:互联网 发布:淘宝店铺怎么换客服 编辑:程序博客网 时间:2024/04/30 02:51
Application类
Application是Android框架的一个系统组件,当Android程序启动的时候系统会创建一个Application对象来存储系统的信息
首先我们来看一下官方文档给出的关于Application的解释
Base class for maintaining global application state. You can provide your own implementation by creating a subclass and specifying the fully-qualified name of this subclass as the “android:name” attribute in your AndroidManifest.xml’s <application>tag. The Application class, or your subclass of the Application class, is instantiated before any other class when the process for your application/package is created.
上边这段话的大致意思就是说,Application类是为了保存一些全局变量信息而存在的基类,可以自己创建一个继承自Application的子类,并在AndroidManidest.xml中application标签中进行设置,Application类或者你自定义的子类Application将会在application或者package被建立的时候在其他类之前实例化
除此之外,官方文档紧跟着加了一段Note备注:
Note: There is normally no need to subclass Application. In most situations, static singletons can provide the same functionality in a more modular way. If your singleton needs a global context (for example to register broadcast receivers), include Context.getApplicationContext() as a Context argument when invoking your singleton’s getInstance() method.
这段话的意思也就是说,正常情况下来说,创建一个application子类并不是必须的,在很多情况下,单例模式在更多模块化的方式下能起到相同的效果,如果单例需要全局context,可以利用Context.getApplicationContext()拿到Context对象从而引用单例的getInstance()方法。
这里可以这么理解,
Application其实可以说成是单例模式的一个类,并且application对象的生命周期肯定是整个程序中最长的,因为它的生命周期就等于整个程序的生命周期。
因为application全局都是单例的,所以对于程序里所有的Activity、Service来说所获得的application对象都是同一个,因此可以通过Application可以进行一些比如数据传递、数据共享、数据缓存等操作。
Application类的实现
当我们自定义Application的时候,主要就是要重写onCreate()方法如果我们在onCreate()方法中初始化变量,就能使其成为全局变量,在程序各个地方都能使用
1.继承Application类,并重写onCreate()方法
public class MApplication extends Application{ @override public void onCreate(){ }}
2.配置自定义Application方法
//在AndroidManifest.xml中配置<application android:name="MApplication"/>
3.在程序中使用自定义类
public class MainActivty extends Activity{ private MApplication ma; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout_main); ma = (MApplication)getApplication; /** 然后可以调用ma中的方法对变量进行设置,设置成功以后,在其他Activity中通过MApplication对象获取到的相同变量也随之更改了 */ .... }}
Constructors
Methods
以上就是官方给出的方法,我尽量根据自己的理解翻译了出来,后面几个目前来说有点理解无能。。。。就先挖个坑好了,以后理解了会来补充的。。。
如有错误欢迎指正,有建议欢迎交流。
参考文献
- 官方文档
- http://www.cnblogs.com/renqingping/archive/2012/10/24/Application.html
- pi9nc的专栏-android Application类的详细介绍
- duer8797的专栏-android Application类的详细介绍
- Android Application类的介绍
- Android Application类介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍 .
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- Android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- android Application类的详细介绍
- 企业应该如何运用商业智能
- sql server 跨数据库复制表
- 伟大的程序员是怎样炼成的?
- VC加载NT式驱动
- android+json+php+mysql实现用户反馈功能
- Android Application类的介绍
- ES6学习-let和const
- Android ToolBar使用总结
- android 日期的各种转换
- Blockchian区块链:IBM HyperLedger fabric 简述
- 现在市面上网络监控系统分析!
- FreeRTOS学习之任务通知
- 初识Java回调机制
- controller层响应客户端json数据