Android Application类的学习

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属性要加上完整的包名,否则系统无法找到这个类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值