Context简介


本篇仅是个人学习笔记,内容为个人理解,如有错误还请提醒。

  • Context类是一个抽象类,它是由Anroid系统System实现的,他的实现类是ContextImpl类
  • Context拥有作用范围内的所有信息
  • 作用范围为全局的Context拥有全局资源和信息,并且能够启动Activity、Service、BroadcastReciver和ContentProvider
  • Context对象的产生及影响范围
    产生途径 影响范围
    Application创建时
    全局 ,属于程序级Context
    BroadcastReceiver广播接收器.note  的onReciver()中会获得
    全局 ,属于程序级Context
    全局,属于程序级Context
    Activity活动.note 创建时
    Activity中,属于活动级Context
    Service服务.note 创建时
    Service中,属于服务级Context
非程序级的Context是随相应活动、服务结束而变得不可用的,因为Activity和Service本身就属于是一种Context对象。
Context类的继承关系图:

Context类常用的方法:
getSystemService(String name
获得相应的管理器。常用的有:ActivityManager、ServiceManager、LayoutInflater、NotificationManager(通知管理器)等
getSystemService(Class<T>serviceClass)
从相应活动(服务)中获得其相应的管理器,google不推荐这么做
getResource()
获得包中的Resuorces实例对象
getAssets()
获得包中的Asset资源管理器AssetManager
getSaredPreferences(String name,int mode)

获得相应的SharedPreferences对象,当同名的SharedPreferences对象被多个Context获取时,它们可以同时访问这个对象。
name:SharedPraferences的文件名。
mode:操作模式,0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。
getApplicationContext()
获得全局Context。
getApplicationInfo()
获得整个程序包的信息对象,即Mainfest.xml中<application>标签的信息。
getContentResolver()
获得一个内容解析器对象。
bindService(Intent servcie,ServiceConnection conn,int flags)
可以使一个Activity和Service绑定,绑定后Service会随Activity联动。
service:可以是程序创建的Intent,也可以是Manifest中定义好的IntentFilter。
conn:需要是有效的ServiceConnection对象,用于接收Service的启动和停止信息,这个参数不能为空。
flags:选择这个绑定的操作模式,0为默认;BIND_AUTO_CREATE表示当绑定创建时,就自动的创建Service。
如果绑定创建成功,返回true;不成功则返回false。
unbindService(ServiceConnection conn)
和一个service解除绑定,至此,这个service就可以被随时停止了。
startService(Intent service)
启动意图所指service。
stopService(Intent service)
停止意图所指service。
openFileInput(String name)
打开一个相应的,私有的、程序包中的可读文件。
openFileOutput(String name)
打开一个相应的,私有的、程序包中的可写文件。
openOrCreateDatabase(String name,int mode,SQLiteDatabase.CursorFactoryfactory)
打开一个相应的、私有的、程序包中的数据库。
name:程序包中的数据库名称。
mode:操作模式,0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。
factory
:当查询操作被调用的时候,会使用这个对象创建一个Cursor对象。
openOrCreateSQLiteDatabase(String name,int mode,SQLiteDatabase.CursorFactory factory,DatabaseErrorHandler errorHandler)
打开一个相应的、私有的、程序包中的数据库。
name :程序包中的数据库名称。
mode :操作模式, 0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。
factory
:当查询操作被调用的时候,会使用这个对象创建一个Cursor对象。
errorHandler :为null表示使用默认的额DatabaseErrorHandler。
registerReceiver(BroadcastReceiver receiver,IntentFilter filter)
在主线程中注册并运行一个广播接收器BroadcastReceiver,用以接收广播意图。
receiver:广播接收器BroadcastRreceiver对象,用于处理广播broadcast;当知道过滤出来的Intent是“sticky”类型的,那么该项可为空,即不会注册广播接收器。
filter:意图过滤器IntentFilter,用于选择要接收的广播。
如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。

registerReceiver(BroadcastReceiver receiver,IntentFilter filter,String broadcastPermission,Handler scheduler)
在主线程中注册并运行一个广播接收器BroadcastReceiver,用以接收广播意图。
receiver :广播接收器BroadcastRreceiver对象,用于处理广播broadcast;当知道过滤出来的Intent是“sticky”类型的,那么该项可为空,即不会注册广播接收器。
filter :意图过滤器IntentFilter,用于选择要接收的广播。
如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。
broadcastPermission:指定一个权限来限制可以向这个接收器广播意图的对象,也可以通过这个来在子线程上运行广播接收器。对应sendBroadcast(Iintent,String)。
scheduler:用以表示由那个线程的广播接收器接收广播,为null表示由主线程中的广播接收器接收。
如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。
unregisterRreciver(BroadcastRreciver reciver) 取消先前注册的broadcastReciver
sendBroadcast(Intent intent)
发出意图给所有接收相应类型Intent的广播接收器。
这是一个异步的广播,并且不能从接收器获得返回的结果,也不能被接收器终止。如果要实现这些,需要使用sendOrderedBroadcast(Intent,String)。
sendBroadcast(Intent intent,String receiverPremission)
发出意图给所有接收相应类型Intent的广播接收器。
这是一个异步的广播,并且不能从接收器获得返回的结果,也不能被接收器终止。如果要实现这些,需要使用sendOrderedBroadcast(Intent,String)。
receiverPremission:指定一个权限,接收器必须持有这个权限,才能接收这个广播;为null表示不需要权限。
sendOrderedBroadcast(Intent intent,String receiverPermission)
发出意图给所有接收相应类型Intent的广播接收器。优先级高的接收器能够比优先级低的接收器更早的接收这条广播。
startAtivity(Intent intent)
启动意图所指的Activity。
startActivity(Intent intent,Bundle options)
启动意图所指的Activity,并且指定它的操作模式。
startActivity(Intent[] intent,Bundle options) 依次启动一组Activity,并且指定它们的操作模式。
startActivity(Intent[] intent)
依次启动一组Activity。


### Context7 简介 Context7 是一个专为大型语言模型(LLMs)、AI代码编辑器和开发者设计的平台,旨在提供最新的、特定版本的文档内容[^2]。它能够直接从官方文档中提取真实且可用的代码片段,并支持按版本过滤,确保用户获得干净、准确的信息[^3]。 ### 核心功能与应用场景 Context7 的核心功能包括: - **实时提取文档**:从官方源如文档站点或 GitHub 仓库中实时提取文档和代码示例。 - **上下文注入**:通过 MCP 协议将提取的内容注入到 AI 模型的上下文中,从而提高生成代码的质量并减少“幻觉”现象。 - **分层架构与智能分块**:context7-mcp 提供了分层架构和智能分块功能,适用于长文本处理、多轮交互以及实时数据整合等复杂场景[^5]。 其主要应用场景包括: - **AI 辅助编码**:专为 Cursor 和 Windsurf 等 AI 优先的代码编辑器设计,允许用户将上下文直接引入聊天或内联补全中。 - **文档增强**:通过在文档中添加 Context7 链接,可以增强文档内容并提供即时代码示例,便于用户快速访问实现片段。 - **提升 LLM 准确性**:对于频繁更新的框架(如 Next.js)或未被训练过的较冷门包,Context7 能够索引整个项目的文档并通过专有排名算法按需过滤信息。 ### 使用方法与部署 为了使用 Context7 并利用其强大的上下文管理能力,可以通过以下方式操作: 1. **集成到开发工具中**:例如,在 Prompt 中加入 `use context7` 指令来激活相关功能。 2. **安装 MCP Server**:有关安装细节,可以参考官方 GitHub 仓库提供的指南 [https://github.com/upstash/context7](https://github.com/upstash/context7)[^4]。 3. **配置边缘节点**:结合具体业务需求调整上下文分层策略、分块规则微调和边缘节点配置,以最大化发挥其潜力。 ### 示例用法 假设需要设置一个基本的 React Query v5 变异请求,可以这样提问: ```plaintext Show me how to set up a basic mutation using React Query v5. ``` 然后附加指令 `use context7` 来确保获取最新且相关的代码示例和解释。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值