前言 上一篇文章我们学习了Context关联类和Application Context的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程。...1.Activity的Context创建过程 当我们在Activity中调用startActivity方法时,其实调用的是Context的startActivity方法,如果想要在Activity中使用...Activity的Context会在Activity的启动过程中被创建,在Android深入四大组件(一)应用程序启动过程(后篇)的第二小节中,讲到了ActivityThread启动Activity的过程...performLaunchActivity方法,这一过程在Android深入理解Context(一)Context关联类和Application Context创建过程已经讲过了,我们来查看performLaunchActivity...frameworks/base/core/java/android/view/ContextThemeWrapper.java ?
Android中context可以作很多操作,但是最主要的功能是加载和访问资源。...在android中有两种context,一种是application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。...context传递给view,意味着view拥有一个指向activity的引用,进而引用activity占有的资源:view hierachy, resource等。...但是当drawable和view关联后,drawable保存了view的reference,即sBackground保存了label的引用,而label保存了activity的引用。...避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化 参考推荐: Android程序里面传Context对象 Android context(Application
目录 什么是Android Context Context意味着一个场景,一个场景就是我们和软件进行交互的一个过程。 从安卓程序的角度来看,Context是什么?...其实一个Activity就是一个Context,一个Service也是一个Context。 ?...image.png Context 本身是一个抽象类,主要实现类为 ContextImpl,另外有子类 ContextWrapper 和 ContextThemeWrapper,这两个子类都是Context...This is * an abstract class whose implementation is provided by * the Android system....主要负责: 四大组件的交互 获取系统/应用资源 文件 数据库(SQLite) 其它辅助功能 参考 深入理解 Android 中的各种 Context
通过这篇文章你将学习到: Context 与 Activity 有什么关系? Context对于Activity有什么作用? 不同类型的Context的应用场景是什么?...关于Context的几个常见关键知识点 1. 二者有什么关系? Context 是一个抽象类;Activity 继承了 Context。...Context 对于Activity有什么作用 Activity 通过 Context接口 去访问Android系统的服务 & 资源,主要包括: 获取应用相关信息 获取系统/应用资源 四大组件之间的交互...getApplicationContext():返回的是Application类型的Context Activity.this:返回的是当前Activity的Context getBaseContext...带你学Android 文章系列: Carson带你学Android:页面活动-Activity Carson带你学Android:广播-BroadcastReceiver Carson带你学Android
前言 Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它。...在开发中我们经常会使用Context,它的使用场景总的来说分为两大类,它们分别是: 使用Context调用方法,比如:启动Activity、访问资源、调用系统级服务等。...Activity、Service和Application都是间接的继承自Context的,因此,我们可以计算出应用程序中有多少个Context,这个数量等于Activity和Service的总个数加1,...和Context相关联的类,除了ContextImpl还有ContextWrapper、ContextThemeWrapper和Activity等等,下面给出Context的关系图。 ?...在Android深入四大组件(一)应用程序启动过程这篇文章的最后讲了ActivityThread启动Activity。
image.png 目录 Android之context讲解 context Context,中文直译为“上下文”. 主要有三个作用: 1、它描述的是一个应用程序环境的信息,即上下文。...2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类。...Context分为: activity : activity其实就是Context,在一般需要使用Context引用情况,直接使用它是最好的. Service : 与activity一样....mPackageName.equals("android")) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,...这样就生成了app的context 以及对应的ContextImpl。 Activity Context 继续看一下activity的。
作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?...Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity...比如微信聊天,此时的“环境”是指聊天的界面以及相关的数据请求与传输,Context在加载资源、启动Activity、获取系统服务、创建View等操作都要参与。 那Context到底是什么呢?...如何获取Context 通常我们想要获取Context对象,主要有以下四种方法 1:View.getContext,返回当前View对象的Context对象,通常是当前正在展示的Activity对象。...View持有Activity引用 ?
我传入Dialog的context-直都没用activity 我:那第一个dialog的context应该是需要activity的 A:没有Activity的应用-样是可以显示Dialog的,setType...今天我们就来彻底搞清楚这一块,问题来了: 1、为什么传入一个非 Activity 的 context 会出现错误? 2、传入的 context 一定要是 Activity 吗?...在创建Dialog对象时,context参数传Activity和传Service或Application之类的非Activity的Context对象有什么区别呢?...肯定有关系啦,别忘了Dialog在show方法里是通过WindowManager来添加View的,而这个WindowManager对象就是从Context的getSystemService(WINDOW_SERVICE...关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。
Android中Context用法详解学习 本文我们一起来探讨一下关于Android中Context的作用以及Context的详细用法,这对我们学习Android的资源访问有很大的帮助,文章中也贴出了一些关于...Android Context使用的示例代码,非常不错,以下是原文: ?...Context与View的关系 View与Context(或Activity)的关系类似于明星与经纪人的关系,所以创建View时,必须明确指定其Context(即经纪人或大管家),否则View就成不了明星...* @see #LAYOUT_INFLATER_SERVICE * @see android.view.LayoutInflater * @see #ACTIVITY_SERVICE * @see android.app.ActivityManager...see android.view.inputmethod.InputMethodManager * @see #UI_MODE_SERVICE * @see android.app.UiModeManager
android中的context可以做很多操作,但是最主要的功能是加载和访问资源。...在android中有两种context,一种是 application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。 ...context传递给view,意味着view拥有一个指向activity的引用,进而引用activity UI占有的资源:view , resource, SensorManager等。 ...但是当drawable和view关联后,drawable保存了view的 reference,即sBackground保存了label的引用,而label保存了activity的引用。...context application context伴随application的一生,与activity的生命周期无关。
在非Activity中使用startActivity:Calling startActivity() from outside of an Activity context requires the...Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri1 = Uri.parse("xxxx://xxxx/page...错误提示信息: Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an...Activity context requires the FLAG_ACTIVITY_NEW_TASK flag....原因分析 activity继承了context重载了startActivity方法,如果使用acitvity中的startActivity,不会有任何限制。
Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?...其实简单点分析,Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity、Service、BroadcastReceiver...可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类。 下面我们来看一下Context的继承结构: ?...出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。...Context一共有Application、Activity和Service三种类型,因此一个应用程序中Context数量的计算公式就可以这样写: Context数量 = Activity数量 + Service
view, ContextMenu.ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu,view,menuInfo);...; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.view.ContextMenu...; import android.view.MenuItem; import android.view.View; import android.widget.TextView; public class...Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main...view, ContextMenu.ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu,view,menuInfo);
021android初级篇之Android注解支持(Support Annotations) 定义:注解(Annotation),也叫元数据。 一种代码级别的说明。...button.setLayoutDirection(View.Text_ALIGNMENT_TEXT_START); Must be one of View.LAYOUT_DIRECTION_RTL,...该注解一般不常用,但是有的时候非常有用,比如在限定向Activity#getSystemService方法传递的参数范围的时候。...(String name, @NonNull Context context, @NonNull AttributeSet attrs) { ......参考链接 Android注解支持(Support Annotations)
Android 复习笔记目录 唠唠任务栈,返回栈和生命周期 唠唠 Activity 的生命周期 唠唠 Context 本文永久更新地址: https://xiaozhuanlan.com/topic/...Activity: luyao.android.App E/context: getBaseContext in Activity: android.app.ContextImpl 关于 Activity...使用 Application 的 Context 创建 Dialog 并显示,会报如下错误: Caused by: android.view.WindowManager$BadTokenException...at android.view.ViewRootImpl.setView(ViewRootImpl.java:951) at android.view.WindowManagerGlobal.addView...(WindowManagerGlobal.java:387) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:96
022_01.png Context类 路径: /frameworks/base/core/java/android/content/Context.java 说明: 抽象类,提供了一组通用的API...ContextThemeWrapper类 路径:/frameworks/base/core/java/android/view/ContextThemeWrapper.java 说明:该类内部包含了主题...Activity类 、Service类 、Application类都是Context的子类 创建Context实例 因此应用程序App共有的Context数目公式为: 总Context实例个数 = Service...个数 + Activity个数 + 1(Application对应的Context实例) 1、创建Application对象的时机 每个应用程序在第一次启动时,都会首先创建Application对象。...handleCreateService()函数位于 ActivityThread.java类 参考链接 Android中Context详解 ---- 你所不知道的Context Android源码分析-
前言 网上关于 Context 的文章也已经有不少了,比如值得参考的有: Android Context完全解析,你所不知道的Context的各种细节 Android Context 到底是什么?...使用的 Resource 不同 Activity Context、Service Context、Application Context、Base Context 有什么区别?...Activity Context 先看 Activity,Activity 在启动时,最终会执行 ActivityThread 的 performLaunchActivitiy: public final...,是担心用户修改了 Base Context 而导致错误的发生 对于 Activity 而言,除了担心用户的修改之外,Base Context 和 Activity 本身对于 Reource 以及 Theme...,是担心用户修改了 Base Context 而导致错误的发生 对于 Activity 而言,除了担心用户的修改之外,Base Context 和 Activity 本身对于 Reource 以及 Theme
,所以它的继承图如下: image.png 以上的 Context 类继承关系清晰简洁,可以得知,Application 、 Service 、Activity 都是继承的 Context 类,所以从这里我们可以得知...我们本次不分析 Looper 相关的东西,只分析跟 Context 有关的内容,继续进入 attach 方法, Android 分析源码,不能一头扎进去,我们应该主要分析它的流程。...attachBaseContext(context); 接下来我们来分析一下 Activity 在哪里和这个扯上关系的。...实例理解 既然 Application、Service 和 Activity 都有 Context 那么它们之间到底有啥区别呢?...这里最后分享耗时一年多整理的一系列Android学习资源:Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记等等
Context是我们在编写Android程序经常使用到的对象,意思为上下文对象。 常用的有Activity的Context还是有Application的Context。...本文讲介绍Android中Context,更具体的说是Activity内存泄露的情况,以及如何避免Activity内存泄露,加速应用性能。...在Android系统中,当我们进行了屏幕旋转,默认情况下,会销毁掉当前的Activity,并创建一个新的Activity并保持之前的状态。...当一个Drawable绑定到了View上,实际上这个View对象就会成为这个Drawable的一个callback成员变量,上面的例子中静态的sBackground持有TextView对象lable的引用...(); } 访问这里了解更多关于单例模式的问题 条条方法返回Context 通常我们想要获取Context对象,主要有以下四种方法 View.getContext,返回当前View对象的Context
领取专属 10元无门槛券
手把手带您无忧上云