`

Android中使用Context?这几点要注意

 
阅读更多
通过阅读源码,我们会发现:
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
0
0
分享到:
评论

相关推荐

    Android插件框架Android-Plugin-Framework.zip

    这几点在PluginTest示例工程中有体现。 11、插件开发模式 插件UI可通过fragment或者activity来实现 如果是activity实现的插件,则最终会在PluginProxyActivity中运行 如果是fragment实现的插件,又分为两种 1...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Android GPS定位简单 DEMO

    不过不建议用这种方法,有几点原因: 一,在很多提供定位服务的应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时调用特定的处理方法 ,其中LocationManager提供了一种便捷、高效的位置...

    Android 一键加速(内存清理、缓存清理) 源码

    http://download.csdn.net/detail/yyh352091626/9196107 基于 LeBron_Six 源码修改,先前的代码只能在Android studio上运行,这几天发了点时间移植到eclipse ,只留下了内存清理和缓存清理。其他的都屏蔽了,如果需要...

    Android_Custom_Views:在 Android 中创建自定义视图

    在设计自定义类时,请记住以下几点它应该提供一些易于使用的界面并且应该有效地使用内存。 自定义视图应符合 Android 标准您可以提供可从 Android XML 布局配置的自定义样式属性您的视图类应与多个 Android 平台...

    Android 使用Path实现涂鸦功能

    今天实现一个涂鸦效果,会分几步实现,这里有一个重要的知识点就是图层,要理解这个,不然你看这篇博客,很迷茫,迷茫的苍茫的天涯是我的爱,先从简单的需求做起,绘制一条线,代码如下: package com.tuya; import android....

    Android自定义控件绘制基本图形基础入门

    本文讲述绘制Android自定义各种...绘制点–这个控件只需要在布局中引用或者代码中new 即可,下面几个绘制只展示onDraw方法 package com.example.viewdemo1.view; import android.content.Context; import android.

    Android USB转串口通信开发实例详解

    Android USB转串口通信开发实例详解 ...整个开发流程可以总结为以下几点: 1.发现设备 UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE); Map<String, UsbDevic

    Android 自定义view实现进度条加载效果实例代码

    这个其实很简单,思路是这样的,就是拿view的宽度,除以点的点的宽度+二个点 之间的间距,就可以算出大概能画出几个点出来,然后就通过canvas画出点,再然后就是每隔多少时间把上面移动的点不断的去改变它的坐标就可以, ...

    Android中使用ListView绘制自定义表格技巧分享

    先上一下可以实现的效果图 要实现的效果有几方面 1、列不固定:可以根据数据源的不同生成不同的列数 2、表格内容可以根据数据源的定义合并列 3、要填写的单元格可以选择自定义键盘还是系统键盘 奔着这三点,做了个...

    Android画板开发之基本画笔功能

    一、简介 这是画板系列的第一篇,一步步开始,从简单的画板,到功能稍微齐全一点的画板,...下面几十行代码完成这个 class TPView(context: Context,attr:AttributeSet ) : View(context,attr) { private var preX

    Android通过ImageView设置手指滑动控件缩放

    ImageView设置手指滑动缩放效果,具体实现步骤大家通过本文学习下吧! 实现步骤 1, imageview设置scaletype为 android:...需要注意的几点是 imageview一定要设置scaletype为matrix,否则图片不能进行缩放.而且Bitmap

    详解Android USB转串口通信开发基本流程

    好久没有写文章了,年前公司新开了一个...整个开发流程可以总结为以下几点: 1.发现设备 UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE); Map<String> usbList = usbManage

    Android项目源码安卓程序猿面试复习APP

    注意:本项目使用android stdio开发,eclipse可能无法直接导入。 一、项目简介 为了更好地准备面试Android开发这一职位,于是就到应用市场查找相关的复习App,结果发现只有寥寥无几的几款,而且很不好用,...

    Android仿微信朋友圈图片查看器

    模拟器不支持多点触控,刚好我的手机又没有Root,不能录屏,悲催啊,大家见谅,想要看真实效果的话,烦请移到文章最下方转载文章中进行源码下载,点击下载源码,运行后再看效果哈~~),这里先就拿几张静态的图片顶替...

    一次有关算法的安卓CTF

    点开之后长这样子,随便输入几个字符,提示错误。 查壳发现没有壳。 直接使用Jeb进行反编译。 看出来了,突破口是this.b.check()这个函数。 package ctf.bobbydylan; import android.content.Context; import ...

    Android手机信号强度检测详细介绍

    最近到处在跑着找工作,难免在面试过程中遇到这样那样的问题,记得最清楚一次在面试过程中被问到,当手机处于弱网状态下,如何处理,如何监听网络信号强度变化。但是真是蒙了,回答的乱七八糟,思路一点都不明确。...

    Android自定义覆盖层控件 悬浮窗控件

    在我们移动应用开发过程中,偶尔有可能会接到这种需求: 1、在手机桌面创建一个窗口,类似于360的悬浮窗口,点击这个窗口可以响应(至于窗口拖动我们可以后面再扩展)。 2、自己开发的应用去启动一个非本应用B,在...

    Activity代理框架AyoActivityNoManifest.zip

    后期一个一个加2 ActivityAttacher的使用 (1) manifestmanifest里只需要声明:主Activity有特殊需求的Activity,如支持旋转模板Activity,暂时只支持一个启动模式对应一个模板Activity模板Activity有几个默认配置项...

    Android 自定义底部上拉控件的实现方法

    前言 又到了新的一月,今天提供一个Android自定义底部上拉布局的...1.有一个部分是能够作为把手(就是图中的handle,)进行拖拽的,这部分高度是暴露在界面中的 -> 需要实现:Handle按钮 * 特殊需求特殊分析,比如让

Global site tag (gtag.js) - Google Analytics