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" >



0 0
原创粉丝点击