android基础教程之context使用详解


在Android开发中,`Context` 是一个非常重要的概念,它代表了应用环境的信息,允许访问应用的资源和类以及调用应用级操作如启动活动、广播和接收意图等。下面我将简要介绍 `Context` 的使用方法和一些常见的应用场景。

### Context 概述

`Context` 是一个抽象类,用于提供关于应用环境的信息。在Android中,主要有两种类型的 `Context`:

1. **Application Context**:全局的,整个应用生命周期内唯一,适合执行不依赖于当前组件的操作,如启动服务、发送广播、加载资源等。

2. **Activity Context**:与Activity紧密相关,依赖于Activity的生命周期,适合进行UI相关的操作,如启动另一个Activity、弹出对话框、发送与当前Activity相关的广播等。

### 获取 Context

- **Application Context**:可以通过 `Context.getApplicationContext()` 在任何Activity或Service中获取。

- **Activity Context**:直接通过Activity的 `this` 关键字或 `ActivityName.this` 获取。

### 使用 Context

#### 1. 加载资源


// 加载字符串资源
String hello = context.getString(R.string.hello);

// 加载图片资源
Drawable icon = context.getResources().getDrawable(R.drawable.icon);

#### 2. 启动 Activity


// 使用 Activity Context
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);

// 使用 Application Context 需要注意,不能直接启动Activity
// 但可以通过其他方式,如广播、事件总线等间接实现

#### 3. 发送和接收广播


// 发送广播
Intent intent = new Intent("com.example.MY_BROADCAST");
context.sendBroadcast(intent);

// 注册接收广播(通常在Activity或Service中)
IntentFilter filter = new IntentFilter("com.example.MY_BROADCAST");
registerReceiver(myBroadcastReceiver, filter);

#### 4. 访问数据库

虽然 `Context` 本身不直接提供数据库访问功能,但它是获取数据库帮助类(如 `SQLiteOpenHelper`)的常用方式。


// 假设有一个继承自SQLiteOpenHelper的类MyDatabaseHelper
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();

### 注意事项

- 避免在 `Context` 持有者(如Activity)销毁后还使用它,这可能导致内存泄漏。

- 谨慎使用 `Application Context` 启动Activity,因为它不绑定到任何特定的UI,可能导致用户体验不佳。

以上就是对Android中 `Context` 使用的简要介绍。希望这对你的学习有所帮助!