你对Context了解多少

作者: 雾里看花最是迷人 | 来源:发表于2016-08-10 23:56 被阅读185次

说起Context,在编写android代码时基本离不开它,吐司的使用、启动服务、创建对话框等等,先看下官方文档的说明

Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.

说的是 context是一个应用全局信息的接口(习惯叫法就是上下文对象)。它是一个抽象类,而这个抽象类是由android系统进行实现的。它被允许访问特定的资源和类,可以到达通话级别的操作,比如启动一个活动、广播、接受intent传递的信息等等

context的传递:
在同一个Activity中,通常直接使用Activity.this即可,或者使用getApplicationContext(),比如在使用Toast时;如果是在View中加载视图时,一般可以直接使用getContext(),比如LayoutInflater.from(getContext).inflater(R.layout.item, null);
面对这些使用,如果不是在本类中,那么久不能这么用了,因此需要采用一种方法统一获取context,如下

Android系统提供了一个Application类,当应用启动时,系统会初始这个类,所以可以借助这个类来管理context

public class MyApplication extends Application { private static Context context; @Override public void onCreate() { context = getApplicationContext(); } public static Context getContext(){ return context; } }

还用这个类需要在清单文件中指定,在<application>中指定即可,如下
<application android:name = ".MyApplication" ...>
然后在其他类中获取context时,就可以直接使用MyApplication.getContext()

注意的问题:这种方法对于dialog这种类型的,不能获得使用该方法获取的context,因为dialog必须是使用Acivity的context(发现有篇博客是具体讲这个原因的),如果涉及到非得在其他类中获得Activity的context(比如在把创建对话框写在其他类中),那么则可以在该类中重写构造方法,并指明参数是Context对象,如
public A(Context context){ this.context = context }
因此在Activity中中初始化该类时,可以传递参数为Activity.this,这样就会通过构造函数把Activity的context传递过去,就可以在该类中使用Activity的context了

可能讲的不是那么到位,水平有限,欢迎各抒己见,共同进步哈

相关文章

  • 你对Context了解多少

    说起Context,在编写android代码时基本离不开它,吐司的使用、启动服务、创建对话框等等,先看下官方文档的...

  • 你对Context了解多少呢

    目录 前言 在Android应用进程的创建 — Activity的启动流程中我们发现,Application和Ac...

  • 11、对于 Context,你了解多少?

    我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Jav...

  • 你对自己了解多少?

    参加007写作不出局的社群,自我介绍环节,要写最喜爱的3种食物、城市、电影、书籍、明星等内容。有的脑海中浮现出很多...

  • 你对冷漠了解多少?

    冷漠虽然是个保护壳也是告诉那些曾经感情受伤害的人,这是一个保护壳,时时刻刻保护着自己,冷漠对待人,又怕自己的冷漠,...

  • 你对大禹了解多少

    01 朋友去浙江苍南出差,在当地游玩时,在一条河道旁,看到立着一块“大禹治水”的石碑,好不诧异:咦!怎么这儿也有大...

  • 你对出汗了解多少?

    出汗是人体排泄和调节体温的一种生理功能,人体通过出汗来迅速调节体温。 运动或者汗蒸的确能够加速血液循环、促进人体的...

  • 对榴莲,你了解多少?

    -1- 大家好,我是榴莲镁奕。爱榴莲,爱写...

  • 你对IT行业了解多少?

    我们今天的目的 是简单粗暴接地气儿 为你说一说IT行业. 或者笼统地说来,IT公司分成几大类。 第一类...

  • 你对孔子了解多少?

    (本文非虚构) “巧言令色,鲜矣仁。” “学而时习之,不亦悦乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?...

网友评论

    本文标题:你对Context了解多少

    本文链接:https://www.haomeiwen.com/subject/tsbjsttx.html