Android中Context到底是什么以及用法

  这是Stackoverflow上一位网友的回答:

  原地址:http://stackoverflow.com/questions/3572463/what-is-context-in-android

  

As the name suggests, its the context of current state of the application/object. It lets newly created objects understand what has been going on. Typically you call it to get information regarding another part of your program (activity, package/application)

You can get the context by invoking getApplicationContext()getContext()getBaseContext() or this (when in the activity class).

Typical uses of context:

  • Creating New objects: Creating new views, adapters, listeners:

    1 TextView tv = new TextView(getContext());
    2 ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • Accessing Standard Common Resources: Services like LAYOUT_INFLATER_SERVICE, SharedPreferences:

    1 context.getSystemService(LAYOUT_INFLATER_SERVICE)   
    2 getApplicationContext().getSharedPreferences(*name*, *mode*);
  • Accessing Components Implicitly: Regarding content providers, broadcasts, intent

    getApplicationContext().getContentResolver().query(uri, ...);

  注:NO1 表示Application context的确可以开始一个Activity,但是它需要创建一个新的task。这可能会满足一些特定的需求,但是在你的应用中会创建一个不标准的回退栈(back stack),这通常是不推荐的或者不是是好的实践。 

  NO2 表示这是非法的,但是这个填充(inflation)的确可以完成,但是是使用所运行的系统默认的主题(theme),而不是你app定义的主题。 

  NO3 在Android4.2以上,如果Receiver是null的话(这是用来获取一个sticky broadcast的当前 值的),这是允许的 

  getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁 
  Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁 
  getBaseContext()  返回由构造函数指定或setBaseContext()设置的上下文

  (图片及注来自http://gqdy365.iteye.com/blog/2149731

posted @ 2015-04-05 20:22  AllenHua  阅读(388)  评论(0编辑  收藏  举报