安卓谷歌电子市场学习笔记系列——Context的使用




一、Context的概念

Context,如果是直接从文档翻译过来,就真的是十足的专业了:提供应用环境全局信息的接口,并且这个 接口是由抽象类实现的,它的执行被android系统所提供,允许我们获取以应用为特征的资源和类型,同时启动应用级的操作,如启动Activity,broadcasting和接收intent。

二、Context的作用

我们通过它访问当前包的资源(getResources、getAssets)和启动其他组件(Activity、Service、Broadcast)以及得到各种服务(getSystemService)

三、引入疑问

在项目中的工具类里或View里需要调用Context,而工具类和View里没有上下文怎么办?

四、解决疑问及用

写一个BaseApplication去继承Application,笔者在此纠结了很久,为什么是去继承Application,不是要去获取Context的嘛,应该去继承Context才对啊,对此也没找到答案,只能大致自己瞎理解理解了,实验证明继承Context时要去实现很多很多方法,超多!后来知道它是个接口而已,而继承Application时不用实现任何方法。再者,Application、Activity和Service是Context的子类,去继承Application就是去继承了Context,一样的!也就没啥好纠结了。最后就是,在清单文件里不是有一个<application>标签嘛,它是单例的,启动程序的时候就会启动Application这个类。
1.public class BaseApplication extends Application{
2.
3. /**
4. * 全局的上下文.
5. */
6. private static Context mContext;
7.
8. @Override
9. public void onCreate() {
10. super.onCreate();
11.
12. mContext = getApplicationContext();
13.
14. }
15.
16. /**获取Context.
17. * @return
18. */
19. public static Context getContext(){
20. return mContext;
21. }
22.}

要注意的是一定要在清单文件的<Application>里添加android:name=".BaseApplication" 下面就可以在工具类里使用上下文获取系统资源啦



public class UiUtils{

public static String[] getStringArray(int tabNames) {
return getResource().getStringArray(tabNames);
}

public static Resources getResource() {
return BaseApplication.getContext().getResources();

}
public static Context getContext(){
return BaseApplication.getContext();
}



  1. public class BaseApplication extends Application{
  2.   
  3.     /** 
  4.      * 全局的上下文. 
  5.      */  
  6.     private static Context mContext;  
  7.       
  8.     @Override  
  9.     public void onCreate() {  
  10.         super.onCreate();  
  11.           
  12.         mContext = getApplicationContext();  
  13.           
  14.     }     
  15.       
  16.     /**获取Context. 
  17.      * @return 
  18.      */  
  19.     public static Context getContext(){  
  20.         return mContext;  
  21.     }  
  22. }

要注意的是一定要在清单文件的<Application>里添加android:name=".BaseApplication" 下面就可以在工具类里使用上下文获取系统资源啦


public class UiUtils{
 
 public static String[] getStringArray(int tabNames) {
  return getResource().getStringArray(tabNames);
 }

 public static Resources getResource() {
  return BaseApplication.getContext().getResources();
  
 }
 public static Context getContext(){
  return BaseApplication.getContext();
 }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值