跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Context
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Context = '''Context'''(上下文)是Android开发中的一个核心概念,它提供了访问应用资源和系统服务的接口,代表了应用环境的全局信息。作为Android应用的基础组成部分,Context允许组件获取应用特定的功能和服务。 == 概述 == Context是一个抽象类,其具体实现由Android系统提供。主要功能包括: * 访问应用资源(如字符串、图形等) * 启动Activity、Service等组件 * 获取系统服务(如布局填充器、通知管理器等) * 访问应用特定目录和文件 在Android中,Context主要有两种形式: 1. '''Application Context''' - 整个应用的生命周期上下文 2. '''Activity Context''' - 与特定Activity关联的上下文 == 主要用途 == === 1. 访问资源 === 通过Context可以访问应用资源: <syntaxhighlight lang="java"> String appName = getContext().getString(R.string.app_name); Drawable icon = getContext().getDrawable(R.drawable.app_icon); </syntaxhighlight> === 2. 启动组件 === 使用Context启动其他Android组件: <syntaxhighlight lang="java"> // 启动Activity Intent intent = new Intent(getContext(), TargetActivity.class); getContext().startActivity(intent); // 启动Service Intent serviceIntent = new Intent(getContext(), MyService.class); getContext().startService(serviceIntent); </syntaxhighlight> === 3. 获取系统服务 === 通过Context获取各种系统服务: <syntaxhighlight lang="java"> // 获取布局填充器 LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 获取通知管理器 NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE); </syntaxhighlight> == Context类型比较 == {| class="wikitable" |- ! Context类型 !! 生命周期 !! 适用场景 |- | Application Context || 整个应用生命周期 || 需要长生命周期对象的场景 |- | Activity Context || Activity生命周期 || UI相关操作 |} == 使用注意事项 == * '''内存泄漏''':避免长时间持有Activity Context引用 * '''类型选择''':UI操作使用Activity Context,后台任务使用Application Context * '''服务获取''':不同Context获取的系统服务可能行为不同 == 实际应用示例 == === 自定义Application类 === <syntaxhighlight lang="java"> public class MyApplication extends Application { private static Context appContext; @Override public void onCreate() { super.onCreate(); appContext = this; } public static Context getAppContext() { return appContext; } } </syntaxhighlight> === 工具类中使用Context === <syntaxhighlight lang="java"> public class NetworkUtils { public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return activeNetwork != null && activeNetwork.isConnected(); } } </syntaxhighlight> == 相关概念 == * [[Activity]] - 拥有自己的Context实例 * [[Service]] - 同样继承自Context * [[Application]] - 提供全局Application Context * [[ContentProvider]] - 数据共享接口 * [[Intent]] - 组件间通信对象 == 参见 == * Android开发者文档:[https://developer.android.com/reference/android/content/Context Context类参考] * Android应用架构指南 [[Category:Android开发]] [[Category:Java编程]] [[Category:移动应用开发]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)