普通Java类获取context

场景:存储数据使用的是SharedPreferences,都知道最简单的获得SharedPreferences的方法是context.getSharedPreferences,但是我存储数据的环节放在了自定义Interceptor(okhttp3)的interceptor方法里面,这个类是无法从Activity/Fragment里获取context的,当然,可以设置一个context的属性放在构造函数或者使用set方法,在使用该类的时候传入context。
这样做的一个弊端在于,如果项目里面对网络请求方法进行了深度的封装,那么context就要存在于一个链上,尽管它并不需要在其他类里使用。
那么换个思路,Android里还有ApplicationContext可以获取。
但是默认的Application类在普通Java类里也是无法得到的,因此需要自定义一个MainApplication(名称随意)

public class MainApplication extends Application {
	private static Context mContext;
	
	@Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }

    public static Context getCustomApplicationContext() {
        return mContext;
    }
}

别忘了在AndroidManifest.xml里修改

<application
	android:name="MainApplication"
>

这样自定义的Application才能生效,之后需要获取context的话,可以通过MainApplication.getCustomApplicationContext()方法来获取。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值