通过阅读源码,我们会发现:
1、它描述的是一个应用程序环境的信息,即上下文。
2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类ContextIml。
3、Activity类 、Service类 、Application类本质上都是Context子类,Broadcast reseive中系统会传递一个Context进来;
4、程序中Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)
5、注意context的生命周期,比如Android知识梳理:消息机制之Handler(http://gqdy365.iteye.com/admin/blogs/2148925)中提的。
6、不同的context,其能力是不一样的,见下表(来自网络):
注:NO1 表示Application context的确可以开始一个Activity,但是它需要创建一个新的task。这可能会满足一些特定的需求,但是在你的应用中会创建一个不标准的回退栈(back stack),这通常是不推荐的或者不是是好的实践。
NO2 表示这是非法的,但是这个填充(inflation)的确可以完成,但是是使用所运行的系统默认的主题(theme),而不是你app定义的主题。
NO3 在Android4.2以上,如果Receiver是null的话(这是用来获取一个sticky broadcast的当前 值的),这是允许的
getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文
- 大小: 53.2 KB
分享到:
相关推荐
要避免这些内存泄露,有以下几点建议: 1. 避免在静态变量中存储Activity的引用,可以使用Application的Context代替,或者使用弱引用(WeakReference)存储Activity,这样在Activity被销毁后,弱引用不会阻止垃圾...
在理解了`Context`的创建和资源访问机制后,开发者可以更好地在Android应用中使用`Context`,避免滥用可能导致内存泄漏的问题。例如,不应在静态变量或非静态内部类中保存Activity的引用,因为这会间接持有`Context`...
标题中的“2011.09.23——— android sample之Notepad(context menu)”表明这是一个关于Android应用开发的示例项目,具体是针对Notepad应用的上下文菜单(Context Menu)功能的实践。在Android开发中,上下文菜单是...
在提供的压缩包中,`yodemLib`可能就是这样一个库,它实现了YModem协议,供开发者在Android应用中使用。集成这个库到Android Studio项目,通常需要以下步骤: 1. 将`yodemLib`作为模块导入:在Android Studio中,...
通过理解以上知识点,开发者可以灵活地在Android应用中使用`Handler`进行线程间通信,高效地处理异步任务和UI更新。在实际开发中,结合`Handler`、`Looper`、`Thread`以及`Runnable`,可以构建出复杂而稳定的多线程...
在Android中使用Quartz需要注意以下几点: - **主线程限制**:由于Android对主线程的操作有严格限制,所有耗时操作应放在后台线程执行,避免阻塞UI。 - **生命周期管理**:确保在应用启动时启动调度器,并在退出时...
### Android Map API 使用详解 ...通过以上介绍,你应该对如何在Android应用中使用Google Maps API有了初步了解。随着不断实践,你会更加熟练地掌握这些技术,并能够开发出功能更强大的地图应用。
4. **注意事项**:在使用SQLCipher时,需要注意以下几点: - 数据库升级时,必须保持加密密钥不变,否则会导致旧数据无法读取。 - 如果应用需要在不同设备间同步数据,需要确保所有设备使用相同的密钥。 - 加密会...
总结,通过URL获取网络图片并在Android应用中显示,主要涉及以下几个知识点: 1. 添加第三方库Glide及其依赖。 2. 配置AndroidManifest.xml以允许网络访问。 3. 使用Glide的API加载图片到ImageView。 4. 可选地,...
在实际开发中,为了使RecyclerView具有良好的性能,还需注意以下几点: - 使用`DiffUtil`来计算数据集的变化,减少不必要的视图更新。 - 使用`ViewHolder`模式优化视图复用,避免频繁的findViewById操作。 - 通过...
在使用自定义Adapter的过程中,需要注意以下几点: 1. 数据结构:你需要有一个数据结构(如`Item`类)来存储每个条目的图片资源ID和文本。 2. 性能优化:由于`getView()`会被多次调用,为了提高性能,通常会在该方法...
在实际应用中,你可能需要考虑以下几点: - 尺寸调整:垂直进度条的宽度和高度可能需要根据设计进行定制。 - 颜色配置:进度条的颜色、背景颜色等可以通过自定义样式或属性进行调整。 - 进度动画:确保垂直进度条...
这使得开发者可以在Android应用中使用@Autowired和其他Spring注解,减少手动配置,提高代码的可读性和可维护性。 3. **Android ContextWrapper**:Spring框架可以与Android的Context进行集成,使得开发者可以更容易...
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
本文将详细探讨如何在Android中使用ListView来实现这种汽泡短信聊天的效果。 首先,我们需要创建一个自定义的ListView适配器(Adapter)。适配器是连接数据源和ListView的关键组件,它负责解析数据并将其转化为...
在Android开发中,自定义视图是提升用户体验和界面独特性的重要手段。本文将深入探讨如何创建一个自定义标签选择器TagView。TagView通常用于显示一组可选的标签,如分类、关键词或兴趣点,用户可以点击选择或取消...
下面将详细阐述这个"Android Wi-Fi使用Demo"中的关键知识点。 首先,我们要导入必要的Android权限。在`AndroidManifest.xml`文件中,你需要添加以下权限: ```xml <uses-permission android:name="android....
为了在应用程序中使用`PowerManager`,我们需要通过以下方式获取服务实例: ```java PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); ``` `Context.POWER_SERVICE`是一个常量,用于...
本文将详细介绍Android中如何进行数据库的增删改查操作,并通过一个具体的实例来展示这一过程。 #### 二、数据库操作的基本概念 在开始具体实例之前,我们先了解几个重要的概念: - **SQLiteOpenHelper**:这是一...