Android Application类的学习
2016-06-15 00:15
323 查看
Application是什么
Application和Activity、Service一样是系统框架的组件,当程序启动时会自动创建一个Application对象,用来保存一些系统信息。Android系统会为每个程序启动时会创建一个Application对象且只创建一个,因此Application类可以说是单例模式(singleton)的一个类。如果需要创建自己的Application类很简单,只需继承Application类即可,然后在AndroidManifest.xml文件里面进行配置就行,只需指定name属性。
当我们启动Application时(实际上Application里面的onCreate方法才是程序的入口),系统会创建一个PID即进程ID,所有的Activity都将在此进程上运行,因此我们在Application创建时初始化的全局变量,同一个程序的所有的Activity都可以访问到该变量。如果任何一个Activity改变了这个值,在其他Activity也改变了。
Application的生命周期是最长的,使整个程序的生命周期。因为他是全局的单例的,因此不同的activity和service获取的都是同一个对象。
应用场景
我们可以通过继承Application类来实现应用程序级别的全局变量,这种全局变量比静态类更有保障,只有当所有的activity被destory以后才会销毁。应用实例1
自己的Applicationpublic class MyApplication extends Application { private String mName; private int mAge; @Override public void onCreate() { super.onCreate(); setName("sdasd"); setAge(121); } public String getName() { return mName; } public void setName(String name) { mName = name; } public int getAge() { return mAge; } public void setAge(int age) { mAge = age; } }
获取MyApplication实例 并调用方法
MyApplication application=(MyApplication) getApplication(); Star star1=new Star(); star1.setName(application.getName()); star1.setAge(application.getAge());
只需要调用Context类的getApplicationContext或者getApplication方法获取到一个Application实例,然后再得到相应的成员变量即可。他是代表我们应用程序的一个类,使用它可以获取当前应用的主题和文件资源等。
注意配置在mainfest文件中。
2、全局获取Context的技巧
public class MyApplication extends Application { private static Context mContext; @Override public void onCreate() { mContext=getApplicationContext(); super.onCreate(); } public static Context getContext(){ return mContext; } }
在OnCreate方法里面调用了getApplicationContext方法获得了一个应用级别的Context,然后又提供了一个静态方法getContext用来用来返回刚刚获取的Content对象。这样不论在哪里需要使用Context时,只需要调用MyApplication.getContext()方法就行了。
注意在AndroidManifest.xml文件中进行配置,name属性要加上完整的包名,否则系统无法找到这个类。
相关文章推荐
- Hadoop Mapper 阶段将数据直接从 HDFS 导入 Hbase
- 音乐播放器
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- Hadoop Mapper 阶段将数据直接从 HDFS 导入 Hbase
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- 使用万能框架HttpHelper抓取安卓APP数据
- iOS---Objective-C中@class与#import的区别
- android事件机制
- iOS TextField 使用大全
- xcode ios gdb
- 地图应用开发(android)使用百度地图sdk详解+案例附源码
- 采用LRU算法的MemoryCache缓存实现
- 微博你没赶上,微信微商城你还想放弃吗?
- 微商分销系统怎么做-微信产品推广
- iOS显示HTML
- android 触摸事件分析
- ios实现视频录制功能 二 静态图片的对焦 曝光
- ios实现视频录制功能 三 获取视频、保存到相册、根据视频生成占位图片
- Windows环境下Android Studio v1.0安装教程、百度云下载Android Studio
- 配置微信公众号二次开发接口java代码