【Android面试】Context专题

Android面试之查漏补缺之Context 、什么是context? 这个在我们开发中最熟悉而又陌生的朋友到底是什么呢?可能大家会不约而同的说,是场景,是上下文,但是到底有多少人理解这个原理呢?我简单概括一下,应该有以下几点: ①、它描述的是一个应用程序环境的信息,即上下文。 ②、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类。 ③、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等。 说了这三点好像你还有点模糊,那我.. 阅读详情

文章目录

一、基础必问

1. 什么是 Context?它的作用是什么?
  • 标准答案:
    Context 直译为“上下文”,是一个抽象类,其具体实现是 ContextImpl。它是应用全局功能的访问接口,充当了应用核心组件(Activity、Service 等)与系统资源(LayoutInflater、PackageManager、ContentResolver 等)之间的桥梁。
    • 核心作用:获取应用资源(字符串、图片、布局)、启动组件(Activity/Service)、发送广播/注册接收器、操作数据库(SharedPreferences/ContentProvider)、创建 View(LayoutInflater)。
2. Context、Activity、Application、ContextWrapper、ContextImpl 之间是什么关系?
  • 标准答案:
    • Context:抽象基类,定义了通用的接口和常量。
    • ContextImpl:具体实现类,真正执行业务逻辑。
    • ContextWrapper:包装类,持有一个 ContextImpl 的引用,用于装饰或代理 Context 的行为。
    • Application/Activity/Service:它们都继承自 ContextThemeWrapper(ContextWrapper 的子类),是 Context 的具体使用场景。
    • 关系总结:装饰模式。Wrapper 持有真实的 Impl 对象,调用时转发给 Impl 执行。
3. 一个 App 里有多少种 Context?分别有多少个实例?
  • 标准答案:
    主要分为三种类型,实例数量计算公式为:
    1. Application Context:1 个(全局单例)。
    2. Service Context:Service 的数量 = 1 个/个 Service 实例。
    3. Activity Context:Activity 的数量 = 1 个/个 Activity 实例(非配置变更情况下)。
    • 总数公式:App 总 Context 数 = 1 (Application) + Service 数量 + Activity 数量。
4. Application、Activity、Service 这三种 Context 有什么区别?
  • 标准答案:
    • 生命周期不同:
      • Application:伴随整个 App 进程生命周期。
      • Activity:伴随 Activity 的生命周期(可见/销毁)。
      • Service:伴随 Service 的生命周期。
    • 功能限制不同:
      • Application/Service 无法启动 Dialog(无 Token)、无法加载主题资源(无 Theme)。
      • Activity 是顶级上下文,能处理 UI 交互、主题、窗口。
5. 哪些地方能获取 Context?哪些不能直接用 this?
  • 标准答案:
    • 能获取:Activity、Service、Application、ContextWrapper 内部。
    • 不能直接用 this:BroadcastReceiver(onReceive 返回后对象即销毁)、AsyncTask(匿名内部类持有 Activity 引用)、普通 Java 类(无上下文环境)。

二、核心原理

6. Context 的创建流程是什么?
  • 标准答案:
    • Application:在 ActivityThread 的 handleBindApplication 中,通过 LoadedApk 创建 ContextImpl,然后创建 Application 并 attach。
    • Activity:通过 ActivityThread 的 performLaunchActivity 创建 ContextImpl,再创建 Activity 并 attach 上下文。
    • 核心逻辑:由 ActivityThread 统一管理,通过 LoadedApk 获取类加载器,实例化 ContextImpl,并调用 attachBaseContext 完成关联。
7. ContextImpl 是什么?它和 ContextWrapper 的关系?
  • 标准答案:
    • ContextImpl:Context 的真正实体,所有的方法实现(如 startActivity、getContentResolver)都在这里。
    • 关系:代理模式。ContextWrapper 是包装类,它内部有一个 mBase 成员变量(类型 Context),通常指向 ContextImpl 的实例。所有 Wrapper 的方法调用最终都会转发给 mBase (Impl) 来执行。
8. 为什么 Activity 可以作为 Context,又能作为 View 容器?
  • 标准答案:
    因为 Activity 继承树是:ContextThemeWrapper -> ContextWrapper -> Context。
    它实现了 LayoutInflater.Factory2 接口。当加载布局时,Activity 会回调 onCreateView 自动给 View 注入 Context。同时,Activity 持有 Window 对象,Window 管理着整个窗口视图,因此 Activity 天然具备作为 View 容器的能力。
9. getApplicationContext() 和 getApplication() 区别?
  • 标准答案:
    • 返回类型:getApplication() 返回的是 Application 对象(或其子类)。getApplicationContext() 返回的是 Context 对象。
    • 用途:getApplication() 用于获取全局应用对象,常用于持有全局变量或生命周期回调。getApplicationContext() 是获取 Context 的一种方式,通常用于需要 Context 但不涉及 UI 操作的场景。
    • 生命周期:两者生命周期一致,都是全局。
10. getBaseContext() 是什么?什么时候用?
  • 标准答案:
    getBaseContext() 返回的是 ContextWrapper 中持有的 底层真实 Context(通常是 ContextImpl)。
    • 使用场景:极少直接使用。通常在自定义 Wrapper 或者需要绕过包装层、直接操作系统服务时使用。面试回答应强调:一般不要直接使用,以免破坏 Context 的装饰链。

三、使用场景 & 禁忌

11. 什么时候用 Application Context,什么时候必须用 Activity Context?
  • 标准答案:
    • 用 Application Context:
      1. 需要全局单例对象(如 ImageLoader、网络库)。
      2. 不需要 UI 交互的操作(如发送广播、操作数据库)。
      3. 生命周期长于当前组件(如静态变量引用)。
    • 必须用 Activity Context:
      1. 显示 Dialog / PopupWindow(必须需要 Activity 的 Token)。
      2. 加载布局资源 (Inflate):涉及主题样式。
      3. 启动 Activity(虽然 Application 也能启,但需要设置 Flag,规范做法是用 Activity)。
      4. 资源加载(涉及主题 Theme)。
12. 弹 Toast、启动 Activity、创建 Dialog、获取资源、SharedPreferences 分别用哪种 Context?为什么?
  • 标准答案:
    • Toast:Application 或 Activity 均可(Application 更推荐,避免内存泄漏)。
    • 启动 Activity:Activity 最佳。Application 启动需设置 NEW_TASK Flag,可能导致任务栈异常。
    • 创建 Dialog:必须是 Activity。Application 没有 WindowToken,无法弹出。
    • 获取资源:Application 或 Activity 均可。如果是动态主题资源需用 Activity。
    • SharedPreferences:Application 或 Activity 均可。
13. 为什么不能用 Application Context 启动非标准 launchMode 的 Activity?
  • 标准答案:
    因为 Application Context 没有任务栈(Task Stack)。
    • 非标准启动模式(如 singleTask、singleInstance)的 Activity 通常需要存在于特定的任务栈中。
    • 使用 Application Context 启动时,系统会为该 Activity 创建一个新的任务栈(除非设置 Flag),这破坏了应用的正常返回栈逻辑,导致按返回键无法回到原界面。
14. 为什么不能用 Application Context 弹 Dialog?
  • 标准答案:
    Dialog 的显示依赖于 WindowToken。Activity 拥有 WindowToken,而 Application Context 只是一个应用级的上下文,不具备窗口令牌(WindowToken),系统无法将 Dialog 附着到屏幕上,会抛出 WindowManager$BadTokenException。
15. 为什么不能用 Application Context 去 inflate 某些带主题的布局?
  • 标准答案:
    布局加载(Inflate)涉及资源解析。带主题的布局(如 @style/MyDialog)依赖于 Activity 的主题(Theme)。Application Context 只有默认的系统主题,没有应用自定义主题,会导致样式加载失败或属性读取错误。

四、内存泄漏

16. 单例模式中为什么不能直接传 Activity Context?会发生什么?
  • 标准答案:
    单例的生命周期长于 Activity(全局单例)。
    • 如果传入 Activity Context,单例就会持有 Activity 的引用。当 Activity 销毁时,由于单例仍持有引用,GC 无法回收 Activity,导致内存泄漏。
    • 后果:Activity 及其持有的 View、资源等对象无法被销毁,严重时导致 OOM(内存溢出)。
17. 静态变量持有 Context 为什么会泄漏?
  • 标准答案:
    静态变量的生命周期是整个进程,与 Application 同生共死。
    如果 Context(如 Activity)被静态变量引用,只要进程未退出,Activity 就无法被回收。即使屏幕旋转(配置变更)导致旧 Activity 销毁,新 Activity 重建时也不会释放旧实例,造成严重泄漏。
18. AsyncTask / Handler / 匿名内部类持有 Context 为什么会泄漏?
  • 标准答案:
    Java 中,非静态内部类/匿名内部类会隐式持有外部类(Activity)的引用。
    • Handler:如果发送了延迟消息,消息队列(MessageQueue)会持有 Handler,进而持有 Activity。延迟期间 Activity 销毁会导致泄漏。
    • AsyncTask:后台任务未结束时,持有 Activity 引用。
    • 解决:使用 Static 内部类 + WeakReference (弱引用) 持有 Context。
19. 如何安全地在单例里使用 Context?
  • 标准答案:
    必须使用 Application Context。
    代码示例:
    // 在 Application 或 初始化时获取
    context = getApplicationContext(); 
    // 或者 Application 级别 Context
    
    原因:Application Context 是全局单例,生命周期与单例一致,不会导致泄漏。
20. 如何判断一段代码是否会因为 Context 导致内存泄漏?
  • 标准答案:
    1. 看引用链:检查是否有长生命周期对象(如 Static 变量、Thread、单例、系统服务)短生命周期对象(Activity/Fragment)。
    2. 看内部类:检查是否使用了非静态内部类、匿名内部类。
    3. 看生命周期:检查 Handler 是否移除了回调,AsyncTask 是否在销毁时取消。
    4. 工具检测:使用 Android Studio Profiler 或 LeakCanary 进行检测。

五、源码级深度

21. Context 的 getResources()、getTheme()、startActivity() 最终是谁实现的?
  • 标准答案:
    最终都是由 ContextImpl 实现的。
    • getResources() -> ContextImpl.getResources()
    • getTheme() -> ContextImpl.getTheme()
    • startActivity() -> ContextImpl.startActivity()
      所有的调用都是 Wrapper 转发给 Impl 后,由 Impl 与系统服务(如 ActivityManagerService)进行 Binder 通信完成的。
22. ActivityThread、LoadedApk、Context 之间的关系?
  • 标准答案:
    • ActivityThread:应用的主线程管理类,入口,管理四大组件生命周期。
    • LoadedApk:代表一个已加载的 APK 文件,缓存了 Application、类加载器、资源等信息。
    • 关系:ActivityThread 持有 LoadedApk 的引用。LoadedApk 负责创建 ContextImpl。组件(Activity/Service)的 Context 是由 ActivityThread 通过 LoadedApk 辅助创建的。
23. 为什么不同 Context 获取的 Resources 可能不一样?
  • 标准答案:
    因为每个 Context 都有自己的 Configuration(配置)和 Theme。
    • Activity Context 的 Resources 会响应屏幕旋转、语言切换等配置变更。
    • Application Context 的 Resources 通常是初始配置。
    • 因此,Application Context 获取的资源可能无法适配 UI 组件的动态配置变化。
24. Context 是如何实现“跨进程不共享”的?
  • 标准答案:
    Context 与 进程 绑定。每个进程有自己独立的 ActivityThread、LoadedApk 和 ContextImpl 实例。
    虽然 Application 是单例,但它是 进程内单例。
    如果应用开启了多进程模式(Android:process),每个进程都会有一个独立的 Application 对象和 Context 树,进程之间无法直接共享 Context,必须通过 Binder 或序列化方式通信
25. 聊一聊Context中的设计模式

在这里插入图片描述

25. 如何自己构造一个 Context?有什么风险?
  • 标准答案:
    可以通过 ContextThemeWrapper 手动构造。
    代码示例:
    ContextThemeWrapper wrapper = new ContextThemeWrapper(this, R.style.MyTheme);
    LayoutInflater inflater = LayoutInflater.from(wrapper);
    
    风险:
    1. 配置同步问题:手动创建的 Context 无法自动响应系统配置变更(如黑夜模式、语言)。
    2. 组件依赖:不能用于启动需要特定宿主 Context 的组件(如 Activity)。
    3. 资源混淆:容易导致资源 ID 查找错误。

六、综合开放题

26. 项目中你因为 Context 踩过什么坑?怎么解决的?
  • 答题思路(话术):
    • 案例:比如在 Fragment 中使用 getActivity() 导致空指针,或者在静态工具类中传了 Activity Context 导致内存泄漏。
    • 解决:
      1. 空指针:通过 isAdded() 判断 Fragment 生命周期,或使用 WeakReference 持有 Activity。
      2. 泄漏:统一使用 getApplicationContext() 传入单例,或者使用 Lifecycle 管理。
    • 总结:强调“生命周期匹配”原则。
27. 一个第三方库要求传入 Context,你怎么设计才安全、不泄漏、兼容所有场景?
  • 答题思路(话术):
    1. 优先 Application:文档说明必须传入 Application Context(getApplicationContext())。
    2. 使用 Lifecycle:如果库需要生命周期回调,要求传入 LifecycleOwner,通过 registerActivityLifecycleCallbacks 管理,而不是强持 Context。
    3. 弱引用:如果必须持有,使用 WeakReference。
    4. 隔离 Context:库内部不直接使用传入的 Context 启动组件,而是通过 Intent 跳转,由上层 App 处理。
28. Jetpack 里 ViewModel、Lifecycle 是如何规避 Context 泄漏的?
  • 答题思路(话术):
    • ViewModel:存储在 ViewModelStore 中,生命周期跨越 Activity 旋转,且不直接持有 View 或 Activity 引用。
    • Lifecycle:采用观察者模式。组件(如 Activity)销毁时,会主动通知 LifecycleObserver,解除注册,避免引用滞留。
    • 核心:打破了强引用链,实现了自动解耦。
29. Jetpack Compose 里的 LocalContext 是什么原理?
  • 答题思路(话术):
    LocalContext 是 Composition Local(组合本地化)。
    它通过 CompositionContext 在 Compose 树中向下传递。
    • 原理:类似于 React 的 Context,提供了一种在组件树中自上而下传递数据的方式,无需手动层层传递参数。
    • 获取:LocalContext.current。
    • 作用:在 Compose 环境中获取当前的 Context 环境,通常用于兼容传统 View 组件或系统资源。
30. 如何做一个全局安全的 Context 提供者?
  • 答题思路(话术):
    不建议搞全局静态 Context。如果必须提供,推荐写法如下:
    1. Application 初始化:在 Application onCreate 中保存 Application Context。
    2. 单例封装:
      public class AppContextProvider {
          private static Context sAppContext;
          public static void init(Context context) {
              sAppContext = context.getApplicationContext();
          }
          public static Context get() {
              return sAppContext;
          }
      }
      
Android面试:来说一说Context吧,Android中的Context是什么?能干什么?怎么用呢? Context的中文翻译为:语境;上下文;背景;环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?在语文中,我们可以理解为语境,在程序中,我们可以理解为当前对象在程序中所处的一个环境,一个与系统交互的过程。比如微信聊天,此时的“环境”是指聊天的界面以及相关的数据请求与传输,Context在加载资源、启动Activity、获取系统服务、创建View等操作都要参与。那Context到底是什么呢?一个Activity就是一个Context,一个Service也是一个Context。 阅读详情

相关推荐

安卓面经_anroid面试题目(5/30)之Context全解析

俗话说得好,Context都没弄明白,怎么做Android开发。

a763450633的博客 594

Android岗面试必问!斗鱼直播Android开发二面被刷,深度好文

开头 在我认为,对于Android面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。 我总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航, 何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是博主总结

m0_52308677的博客 146

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3748

android开发要学什么语言?熬夜肝完这份Framework笔记,内含福利

前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。悲哀…. 幸好提前准备过,不过都是断断续续的今天看点这个,明天看点那个,三天打鱼两天晒网的,也没用心去准备.这下好了,直接到了最差的地步了,没办法,用心准备吧。 BAT面试专题 1、要做一个尽可能流畅的ListView,你平时在工作中如

fanzhang_vip0723的博客 663

配电网故障重构/孤岛划分/故障恢复

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

zhangxd212489的博客 2500

WPS Office 2026免费安装指南:AI办公与安全使用全解析

办公软件作为数字化办公的核心工具,其基本原理是通过文档处理、数据计算和演示展示等功能模块满足用户日常办公需求。随着人工智能技术的发展,现代办公软件逐步集成AI能力,通过自然语言处理和数据分析算法提升工作效率。在技术价值层面,优秀的办公软件不仅需要保持格式兼容性和跨平台同步能力,更要注重用户数据安全防护。从应用场景来看,无论是个人文档编辑、企业报表分析还是团队协作演示,办公软件都发挥着关键作用。WPS Office 2026作为国产办公软件代表,深度融合AI助手功能,支持智能写作和数据分析,同时通过官方免费策

weixin_30599769的博客 710

安卓开发知识点,阿里内部Android笔记火爆IT圈

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

m0_60666841的博客 852

LoRaWAN数据包分析工具

前言:LoRaWAN的射频数据包是加密的,而且有些字段是某个字节的某几位,看着不是那么直观,因此在某些情况下需要借助工具来分析数据包。 1、安装npm 这个工具是用JavaScript写的,其中用到了一些依赖库,而npm就可以一次性把这些依赖库下载下来,因此我们先要下载安装npm这个工具。 安装:sudo apt install npm 输入y,等待安装完成: 检查是否安装成功:npm -v 说明安装完成。 2、安装LoRa数据包分析工具lora-packet 安装:npm i.

freemote的博客 4629

最新高频Android面试题目分享,app架构升级

如果你觉得这些内容对你有帮助,可以扫码领取!!!!

2401_83642079的博客 1050

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 257

运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案

本文主要介绍了运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 10万+

Android开发基础不牢,双向绑定原理

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

2401_84408437的博客 913

Vue3 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue3,nuxt3,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue3西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,自定义播放器样式,截屏,监控视频,vue3使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,

🏆 前端领域优质创作者 1万+

Android MVP模式详解,Android工作资料

由于题目很多整理答案的工作量太大,所以仅限于提供知识点,详细的很多问题和参考答案我都整理成了 PDF文件《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84412521的博客 845

华为OD技术面八股文_C++_02

汇总华为OD面试C++方面计数八股文真题,提供详细解答。

qq_45776114的博客 765

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

35岁程序员的人生感悟,通宵都要看完这个Android关键技术点

相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84407972的博客 972

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

十年Android之路面试2000+人,面试准备+内部泄露核心题有解析(中高级)(1)

在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。

2401_84121646的博客 983

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

教育移动互联网应用程序app,,学习Android开发只要这些东西

其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:架构师筑基必备技能Android框架体系架构(高级UI+FrameWork源码)360°Androidapp全方位性能调优设计思想解读开源框架NDK模块开发移动架构师专题项目实战环节移动架构师不可不学习微信小程序混合开发的flutterAndroid学习的资料我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

VIP129370的博客 444

Android面试:来说一说Context吧,Android中的Context跟Java有什么区别?能干什么?怎么用?

源码中的注释是这么来解释Context的:Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。就是说,它描述一个应用程序环境的信息(即上下文);是一个抽象类,Android提供了该抽象类的具体实现类;通过它我们可以获取应用程序的资源和类(包括应用级别操作,如启动Activity,发广播,接受Intent等)。

2401_87255046的博客 1440

Context面试-Android

Context 也就是上下文对象,是 Android 常用的类。我们常用的 Activity,Service 和 Application 都间接的继承了 Context。Context 是一个抽象类。 日常开发中,使用 Context 的地方数不胜数,比如像弹 Toast、创建 Dialog、创建自定义 View 等等时候都需要传入 Context 对象,还有像启动 Activity、Service、访问资源和获取系统服务等等,都离不开 Context。它允许访问特定于应用程序的资源和类,以及对应用程序级操

hequnwang10的博客 329

深度详解 Android 之 Context

在 Android 开发中、亦或是面试中都离不开四大组件的身影,而在创建或启动这些组件时,并不能直接通过 new 关键字后跟类名来创建实例对象,而是需要有它们各自的上下文环境,也就是本篇文章要讨论的 Context。Context 提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被 Android 系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。............

neuHenry 9178

面试:Android Context全解

网上关于 Context 的文章也已经有不少了,比如值得参考的有:Android Context完全解析,你所不知道的Context的各种细节Android Context 到底是什么?但看了一下,发现还有值得讨论的地方,比如这个等式:Context个数 = Service 个数 + Activity 个数 + 1老实说,我不明白这个等式有什么意义,而且还是错的。首先多进程情况下,Application 对象就不止一个;

王温暖的博客 1042

Android面试:来说一说Context吧,Android中的Context是什么

外链图片转存中…(img-OEMPno85-1711638173083)]

2401_83974199的博客 975

安卓-Android什么是context?

原帖: link Android面试:来说一说Context吧,Android中的Context是什么?能干什么?怎么用呢?字节走动_Android关注42020.08.12 22:26:52字数 3,633阅读 813 Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言,Activity本质上也是一个对象,那上面的写法有什么问题呢?估计很多人说不

ruiruiddd的博客 279

具身智能 2026:启元人形机器人开发者生态的“安卓时刻”来了吗

一个贯穿全文的问题:人形机器人开发者生态,是否正从「封闭垂直」走向「开源平台化」?本文以开源底座的公开数据为标尺,盘点 SDK、URDF、仿真与技能分发的开放程度,并落回启元机器人的开源路径。所有关键数据均标注来源,文末附社区与学堂链接。

在北风吹起的时候加入我们的队伍 在秋雨到来的时候成为彼此的温暖 750
上一篇: 【跨端技术ReactNative】JavaScript学习
下一篇: 【Android面试】Activity生命周期专题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值