一、Context的描述:

1、描述的是一个应用程序环境的信息,即上下文
2、该类是一个抽象类,Andriod提供了改抽象类的具体实现类(ContextImpl)
3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作

  • getApplication():用来获取Application实例,在Activity和Service中才能调用,在其他场景中,比如说BroadcastReceiver中,只能借助getApplicationContext();
  • getBaseContext():得到的是一个contextImpl对象(上下文功能实现类)

  • 在构造方法中不能够调用Context方法

4、一些类

  • Context类:抽象类,提供了一组通用的API。
  • ContextIml.java类:该类实现了Context类的功能
  • ContextWrapper类:该类只是对Context类的一种包装,该类的构造函数包含了一个真正的Context引用,即ContextIml对象。
  • ContextThemeWrapper类:该类内部包含了主题(Theme)相关的接口,即android:theme属性指定的。只有Activity需要主题,Service不需要主题

5、什么时候创建Context实例:
1)创建Application对象时,而且整个APP以哦那个一个Application对象
2)创建Service对象时
3)创建Activity对象时
总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)

二、SharedPreferences小记

6、SharedPreferences存储的步骤如下:
  一、根据Context获取SharedPreferences对象
  二、利用edit()方法获取Editor对象。
  三、通过Editor对象存储key-value键值对数据。
  四、通过commit()方法提交数据。
SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例

  • name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。文件存储在/data/data//shared_prefs下
  • mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
SharedPreferences的注意事项:
编辑完SharedPreferences一定要记得调用Editor的commit()方法,否则不会将数据写入到文件里的。

三、Intent

1、作用:不同组件之间通信的“媒介”专门提供组件互相调用的相关信息

  • 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。
  • 启动Service:可以将Intent对象传递给startService()方法或bindService()方法以启动一个Service,该Intent对象包含了要启动的Service的信息及其他必要的数据。关于使用startService()方法启动Service,可以参见博文《Android中startService的使用及Service生命周期》。关于使用bindService()方法启动Service,可以参见博文《Android中bindService的使用及Service生命周期》。
  • 发送广播:广播是一种所有App都可以接收的信息。Android系统会发布各种类型的广播,比如发布开机广播或手机充电广播等。我们也可以给其他的App发送广播,可以将Intent对象传递给sendBroadcast()方法或sendOrderedBroadcast()方法或sendStickyBroadcast()方法以发送自定义广播。

2、Intent的属性:
1)Action:动作,指Intent要完成的动作,是一个字符串常量
2)Data:执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。
- 如果只设置数据的Uri,需要调用Intent对象的setData()方法;
- 如果只设置数据的MIME类型,需要调用Intent对象的setType()方法;
- 如果要同时设置数据的Uri和MIME类型,需要调用Intent对象的setDataAndType()方法。
需要注意的是,如果你想要同时设置数据的Uri和MIME类型,不要先后调用Intent对象的setData()方法和setType()方法,因为setData()方法和setType()是互斥的,即如果调用了setData()方法,会将Intent中已经通过setType()方法设置的MIME类型重置为空。如果调用了setType()方法,会将Intent中已经通过setData()方法设置的Uri重置为空。

3)Category:一个执行动作Action的附加信息

  • CATEGORY_BROWSABLE 目标组件会允许自己通过一个链接被一个Web浏览器启动,该链接可能是一个图片链接或e-mail信息等。
  • CATEGORY_LAUNCHER 用于标识Activity是某个App的入口Activity。

    4)Type:指定Intent的目标组件的类的名称
    5)Extra:额外的数据信息,Intent中有一个Bundle对象存储着各种键值对,接收该Intent的组件可以从中读取出所需要的信息以便完成相应的工作。有的Intent需要靠Uri携带数据,有的Intent是靠extras携带数据信息。
    6)Flags :标记,Intent类中定义的flag能够起到作为Intent对象的元数据的作用。这些flag会告知Android系统如何启动Activity(例如,新启动的Activity属于哪个task)以及在该Activity启动后如何对待它

Contect、SharedPreferences及Intent学习小记相关推荐

  1. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  2. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  3. 多项式快速插值学习小记

    今天终于抽空把这个综(du)合(liu)知识点学了,心力交瘁-- 多项式快速插值 给出 nnn 个点 (xi,yi)(x_i,y_i)(xi​,yi​) ,要求一个次数为 n−1n-1n−1 的多项式 ...

  4. 多项式的ln、exp、快速幂和开根学习小记

    不妨又学习了一下多项式的求ln.exp.快速幂和开根操作. 这些操作比之前的求逆更上了一层台阶,应用同样很广. 多项式求逆等知识在我的博客里有讲:多项式的求逆.取模和多点求值学习小记 多项式ln 给出 ...

  5. 积性函数与Dirichlet卷积 学习小记

    前言 首先感谢 XHM 大佬的悉心指导,我懂得了不少~. 链一下他关于这方面的见解.博客--XHM 的Dirichlet卷积 学习小记 一些定义 回归正题,这次我学习了一下狄利克雷卷积方面的知识. 先 ...

  6. js 正则学习小记之左最长规则

    js 正则学习小记之左最长规则 原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'n ...

  7. python 温度 符号_【火马】Python学习小记01

    Python 学习小记 Life is short,you need Python! 写在前面 自从重新拾起2016年开始注册的公众号"火马编程",我就把TA当作了自己的一块&qu ...

  8. 8086汇编学习小记-1

    8086汇编学习小记-1 View Code assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT... datasg ENDSsta ...

  9. 【Android 源码学习】SharedPreferences 源码学习

    第一章:SharedPreferences 源码学习 文章目录 第一章:SharedPreferences 源码学习 Android SharedPreferences的缺陷 MMKV.Jetpack ...

  10. java基础小记_[Java教程]Java基础学习小记

    [Java教程]Java基础学习小记 0 2016-10-07 18:00:07 题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪 ...

最新文章

  1. angular 指令渲染_Angular JS指令有后期渲染回调吗?
  2. 今日c++练手之寻找n个连续的合数
  3. 高手与菜鸟,思想与技术
  4. permgen_打破PermGen神话
  5. 【CodeForces - 195A】Let's Watch Football (追及问题,模拟)
  6. 【BZOJ1483】【codevs2335】【hdu5997】梦幻布丁+加强版,LCA+主席树
  7. Android_撕衣服小案例
  8. 2021-0409梦笔记
  9. 最全面的Fiddler 4教程讲解(界面)
  10. 矩阵的Cholesky分解的Matlab简洁实现
  11. 【知识地图】开发测试全栈 (未完待续)
  12. 开关电源Buck电路CCM及DCM工作模式
  13. 超级账本基金会执行董事Daniela Barbosa:开源区块链已成主流
  14. aria2 linux 编译,Centos 7 编译安装Aria2
  15. 常用存储芯片-笔记本上固态硬盘PTS11系列推荐
  16. Cohort Analysis组群分析(1)
  17. matlab实验思考,MATLAB实验.doc
  18. 非常实用的cmd命令
  19. java7大设计原则
  20. zenmap扫描ip段_zenmap端口扫描工具(ip端口扫描器)V7.71 最新版

热门文章

  1. 小白IT:如何快速写出一个前端页面(网页),Python中如何使用前端语言什么是?JavaScript?BOMDOM?Bootstrap??
  2. js和vue的图片加载完成事件
  3. 什么是储蓄池抽样(Reservoir Sampling)算法?
  4. 京东11万蓝领和1万白领,折射的是整个中国互联网
  5. 电脑无法启动,风扇不转,电源灯一直闪烁
  6. 滴滴裁员并不代表互联网进入寒冬,只是精细化管理时代到来了
  7. mysql ndb 命令_MySQL NDB Cluster环境启动与关闭
  8. 防线 2020/3/31
  9. 在浏览器中聊天(msn.jabber or gtalk,yahoo,aol,icq,meebo)
  10. python画图函数