Today's interview questions are the second in our common interview series. Let's talk about the context in android. I believe that all android Developers are very familiar with this context and must have used it before. But what is the context? How many people can understand it? The previous question is about listview, which is also very common. Today's context is also very common, so the interview questions are actually very close to us and must be common, few companies interview things that are very remote and don't need. What is not used in development? Right, well, it's a bit too much. We'll come back from the eggplant field and talk about this context.
1. What is context?
What are the most familiar and unfamiliar friends in our development? It may be a scene or context, but how many people understand this principle? I would like to briefly summarize the following points:
① It describes the information of an application environment, that is, the context.
② This class is an abstract class. Android provides the specific implementation class of this abstract class.
③ We can use it to obtain the resources and classes of the application, as well as some application-level operations, such as starting an Activity, sending broadcasts, and receiving Intent information.
After talking about these three points, it seems that you are still confused. I will summarize them.
Summary: Context is an abstract base class. We use it to access the resources of the current package (getResources, getAssets) and start other components (Activity, Service, Broadcast) and get various services (getSystemService). Of course, only the above content can be obtained through Context. To understand the Context, Context provides an application running environment. In the Context environment, an application can access resources to complete interaction with other components and services, context defines a set of basic functional interfaces. We can understand it as a set of standards, and Activity and Service are subclasses that implement this set of standards. This may not be accurate, because this set of specifications is actually implemented by the ContextImpl class in a unified manner, the Activity and Service only inherit and selectively override the implementation of some specifications.
2. Let's take a look at the inheritance relationship of the context-related classes.
We can see from the figure that Activity, Service, and Application classes are essentially Context subclasses. Do you know why context is always used in these classes?
3. Differences between Application, Activity, and Service as Context
Similarities: Both of them indirectly inherit the Context.
Differences: first, let's look at their inheritance relationships. Through comparison, we can clearly find that the class inheritance relationships between services and applications are similar, while the Activity has another level of inheritance ContextThemeWrapper, this is because the Activity has the topic concept, while the Service has no interface Service, and the Application is an abstract thing, which is also presented through the Activity class. The true implementation of Context is in ContextImpl, that is to say, most of the method calls of Context are transferred to ContextImpl, and the three are created in ActivityThread, the core process of Activity startup is completed in ActivityThread. It should be noted that Application and Service creation is also completed in ActivityThread.
4. How many context exists in an application?
How many context exists in an application? This is the most common and frequently asked question in our interviews. After reading the above three analyses? Do you know how many of them are there?
The answer is obvious: the total number of Context instances = Service count + Activity count + 1 (the Context instance corresponding to the Application)
I believe everyone can understand it? I really don't understand. I just need to take a look at the source code analysis and have a deep understanding. After learning about the content I mentioned above, you have encountered problems with context during the interview. Basically, there is no problem.
After finishing the two questions, do you want to look forward to the third question?
I personally organized a high-end Android communication group. If you are interested, you can first share this article to your circle of friends, add me, and send it to your circle of friends. I will pull you in. If you learn more, you can receive the dry goods push immediately.
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.