什么是Context? 怎么理解安卓上下文?(1)

本文详细解释了Android中的Context概念,它是应用程序或对象当前状态的抽象表示。通过Context可以访问应用程序资源和服务,例如创建视图组件、启动Activity、发送广播等。

什么是Context? 怎么理解安卓上下文?

翻译http://stackoverflow.com/questions/3572463/what-is-context-on-android

在安卓变成中,到底Context(上下文)类是什么,有什么用?

简单地说,是当前程序/对象的现在的状态。Context让新建的对象知道到底是怎么一回事。你可以通过context获取关于你程序的另外一部分(activity和application)的信息。

你可以通过调用以下的方法来获得context。

getApplicationContext()
getContext()
getBaseContext()
this (在activity类)

一些典型的用法:

  • 创建一个新对象:创建view,adapter,listener:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • 访问一些公共资源,比如说: LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
  • 隐式的访问一些组件:内容提供者,广播,意图
getApplicationContext().getContentResolver().query(uri, ...);
Android Compose 中,使用 `LocalContext` 获取的上下文和 Activity 上下文存在一些区别: ### 本质类型 `LocalContext` 获取的上下文本质上是当前 Compose 环境下的上下文,它可能是 Activity 上下文,也可能是 Application 上下文或者其他类型的上下文,具体取决于 Compose 所在的环境。而 Activity 上下文则明确是 `Activity` 类的实例,代表当前的活动界面。 ### 生命周期范围 Activity 上下文的生命周期与对应的 Activity 一致。当 Activity 被销毁时,Activity 上下文也随之失效。如果在 Activity 销毁后继续持有并使用 Activity 上下文,可能会导致内存泄漏。而 `LocalContext` 获取的上下文生命周期取决于其所在的 Compose 环境,不一定与 Activity 生命周期完全一致。例如,在某些情况下可能会是 Application 上下文,其生命周期与整个应用的生命周期相同。 ### 使用场景 - **Activity 上下文**:适用于需要与 Activity 相关的操作,如启动新的 Activity、获取 Activity 的布局视图、处理 Activity 的生命周期事件等。例如,在需要打开一个新的 Activity 时,必须使用 Activity 上下文: ```kotlin val intent = Intent(activityContext, NewActivity::class.java) activityContext.startActivity(intent) ``` - **`LocalContext` 获取的上下文**:在大多数 Compose 场景中,`LocalContext` 获取的上下文可以满足需求,如显示 Toast、获取资源等。例如,使用 `LocalContext` 获取上下文来显示 Toast: ```kotlin import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import android.widget.Toast @Composable fun ShowToast() { val context = LocalContext.current Toast.makeText(context, "这是一个 Toast", Toast.LENGTH_SHORT).show() } ``` ### 上下文范围 Activity 上下文的作用范围仅限于当前 Activity 内部,不同的 Activity 拥有不同的 Activity 上下文。而 `LocalContext` 获取的上下文可能会根据 Compose 的嵌套结构和使用场景而变化,其作用范围可能覆盖多个组件或整个 Compose 树。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值