利用Application共享全局数据

前言:
每个Android程序启动的时候都会创建一个Application对象,如果我们没有在程序中重新定义Application类的话,就会用默认的Application类创建对象。这个Application对象是单例对象,它的生命周期就等于这个程序的生命周期。因此我们可以在不同的activity或service中获取这个唯一的Application对象,进行一些数据的共享传递等。

如何在程序中自定义并应用Application类呢?

一、新建一个类继承Application类:

public class MyApplication extends Application {

    private static int configValue;

    public int getValue() {
        return  configValue;
    }

    public void setValue(int value) {
        this.configValue = value;
    }
}

这样,自定义的Application类就写好了,但是还要让它发挥效果才行。

二、替换原有的Application类:
在Manifest中将Application指定为我们自定义的MyApplication类。
原有的Manifest文件中,Application标签下默认是没有android:name属性的,这就表示用的是默认的Application类,加上后如下所示:

    <application
        android:name=".MyApplication"//这个是我们加上的
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

通过这两步操作,MyApplication类已经替换了原有默认的Application类。

下面验证效果:
在MainActivity中获取MyApplication对象,在onCreate()方法中调用此对象的setValue()方法,然后打印configValue的值,看是否set成功。

public class MainActivity extends AppCompatActivity {

    MyApplication app;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        app = (MyApplication) getApplication();//调用Context的 getApplicationContext或者Activity的getApplication方法可以得到此应用的唯一Application对象,但是要强制转换为MyApplication对象,否则会报错。
        app.setValue(3);

        Log.i("test", "onCreate, v == " + app.getValue());
    }
}

结果:
I/test: onCreate, v == 3
说明对configValue变量的赋值成功了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值