您的位置:首页 > 移动开发

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

自己的Application

public 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属性要加上完整的包名,否则系统无法找到这个类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: