1. 是什么?
Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。
android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局 的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些,数据传递,数据共享 等,数据缓存等操作。
2. 怎么实现
第一步:写一个自定义的MyApplication类继承自Application 重写onCreate方法 ,在这个方法里面实例化Application
第二步:配置全局的Context
<application Android:name="com.appstore.service.MyApplication" ></application>
注意:在配置application时,一个项目中只能有一个application,一般做法是把我们默认的application配置成自定义的application。
第三步:使用,使用的时候用的时候根据类的名称访问Context
- 举例说明
public class MyApplication extends Application {
private static MyApplication instance;
private List<PointBean> points;
private int count;
public MyApplication() {
}
// 单例模式获取唯一的MyApplication实例
public static MyApplication getInstance() {
if (null == instance) {
instance = new MyApplication();
}
return instance;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
points = new ArrayList<PointBean>();
}
@Override
public void onTerminate() {
// TODO Auto-generated method stub
super.onTerminate();
}
public List<PointBean> getPoints() {
return points;
}
public void setPoints(List<PointBean> points) {
this.points = points;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
存数据
myapplication.setPoints(locations);
myapplication.setCount(index);
取数据
myapplication = (MyApplication) getApplicationContext();
points = myapplication.getPoints();