Application
来源:互联网 发布:淘宝差评更改链接 编辑:程序博客网 时间:2024/06/13 20:08
Application
android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application是单例 (singleton)模式的一个类。且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。因此在安卓中我们可以避免使用静态变量来存储长久保存的值,而用Application。
为了更好的利用Application的这一特性,比如我们需要Application来保存一些静态值,需要自定义继承于Application的类,然后在这个类中定义一个变量来保存。如下:
通常Application全局对象是通过Context或Activity的getApplicationContext()方法获得的,
1.在activity中这样做:appContext = (AppContext)this.getApplicationContext();
2.如果有Context对象:appContext = (AppContext)mContext.getApplicationContext();
3.但是很多时候我们的代码可能在activity之外,且没有context对象的引用,但是又需要获得AppContext对象,原始的做法可能是想办法将activity或者context传递到需要调用的地方,但是这样代码耦合度太高,可读性差。我们有更优雅的做法。我们谈到Application对象是全局的,单例的,既然是单例应该有一个类方法能让我们获得这个单例对象才是,但Application本身没有,我们只能在自定义的时候想办法。如下:(这样我们就能在app工程的任何地方通过AppContext.getInstance()来获得Application全局对象。)
public class AppContext extends Application{ public static final int NETTYPE_WIFI = 0x01; public static final int PAGE_SIZE = 20;//默认分页大小private static AppContext instance;public static AppContext getInstance() {return instance;} @Overridepublic void onCreate() {super.onCreate();instance = this;}<application android:name=".AppContext" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
- Application
- Application
- Application
- application
- Application
- application
- Application
- application
- application
- Application
- application
- application
- application
- <application>
- application
- application
- <application>
- Application
- iOS Code Sign error: Provisioning profile can't be found 解决方案
- 流行 NIO Framework netty 和 mina 性能测评与分析
- 关于spring mvc + mybatis + spring aop声明式事务管理没有作用的问题
- 英尺到米转换
- zoj1709 bfs
- Application
- WebKit加载流程 - 概述
- java 保存读取图片到oracle
- 文件名过长/文件夹路径过长,无法删除文件夹/文件的解决办法
- 经典java NIO框架
- IT程序员们,我该做什么选择呢
- 软件开发的21条规律
- 关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签
- Application Cache manifest 的处理 (Webkit)