00:00
嗯。下面呢,给大家讲一些。其他的一些知识啊。大概。呃,下面我给大家去介绍三个知识,一个是context。一个是AR。再一个呢,就是关于屏幕横竖屏的一些处理。啊,就是这三个,我们来去说一下。先来看第一个。这是我们第一天就碰到一个类,它实际上是我们啊系统的一个类。非常核心的一个类啊,这个类里面呢,它有很多的方法。啊,其实我们很多方法都用过。啊,譬如说我们去假设R,大家觉得应该有什么方法?先听。所以说我们去启动一个组件activity。
01:05
是不是有啊,是他的service。有吧?发广播。是吧,都有吧,也就是说那个组件间的一个交流,是不是它都有啊好。其实它还有一些别的。这个我们用过吗?用过是不是去得到STEM manager啊,我们还说过它有一个得到系统服务的一个类,一个方法。是什么?是不是三呀。啊。啊,还有一些啊,我们后面可能用到的什么得到包管理系。啊,得到内容提供者,这是我们用过的。对吧,好。诶,这个地方啊,看看还有我们的一些什么用到的啊,往下翻。
02:02
嗯,还有这个地方能得到什么。苞米。嗯。还有能得到什么?应用了信息。对吧。就当前应用的信息啊,这个是比较优的,看这个。这个有用吗?对吧。是open一个是操作哪一个文件的呀,哪个路径的文件。Date date下面的files吧,啊,报名下面的files啊,一个是文件输入流,一个是。文件输出流。是吧,啊,还有这一个。是不是得到那个FS文件夹对象啊,啊,这个也是有用的,哎,它。这个得到了啊,SD卡里面跟应用对应的那个不要子目录。这个也有用啊。啊,后面呢,是譬如说注册广播接收器。
03:03
是不是也是的,嗯,也是的啊,我就不再一个一个给大家去说了,来,我们回来拍。啊,首先呢,我们要理解它。啊,Context提供了关于应用环境全局信息的一个抽象类。通过他的对象才可以去操作系统或者应用相关的一些资源。你有什么意思了?这有的时候我们是通过看对象去调用它啊,使用它有两种方式。跟大家说一下啊,我在这里加一个哪两种方式呢,第一种是通过它呢去调用方法,就是通过看的点调用什么方法。这肯定在用它吧。这是一种。还有一种。你没发现经常干一件事的时候,那个参数都需要传个什么。
04:00
Context。就是将contact。将的作为。食餐。好啦,好啦好啦。作为13传入。对吧,其实这个它内部是不是在用啊。啊,只是我们不是直接用,而他内部需要。啊,这是使用它的两种方式,大家去知道啊,Context最主要的功能是加载和访问一些资源。譬如说我们去启动或停止我们的组件,什么发广播呀,对吧,啊,都是注册广播接收器呀。这是跟我们组件相关的。
05:02
这个地方都是我们前面用过的,不再前面说了,下面看这里啊。加载布局文件需不需要?啊,我们是不是写点in flight传的第一个参数就是context。这是我们说的第二种使用的方式吧。好,我们去创建一个四个对象是不是啊。也需要。我留一个。看我们这个是不是前前面用过吧。啊,传一个对象。对吧,好了,获取应用环境的全集信息,比如说我们大家看到这里面提供了很多的方法啊。这是什么意思?嗯,得到一个应用的什么context的对象啊好看下面这一个。这个我们都说过了,得到应用的信息,得到内容解析器,得到包管理器,包名,这是什么?
06:08
资源对象,也叫资源管理对象。啊,他可以去操纵资源,那想到他了,我就想到另外一个方法叫get size。是不是有个他呀啊。也只是管理的目录结构不太一样啊。这个。是不是得到hsp对象啊,啊,这一个根据你这个字符串的标识得到字符串对象,就字符串的数据,这个返回的是个实据了,这个能理解吧。嗯。怎么得到系统的服务,这个我们是也有用。好,这是说的是他。啊,我也就这么功能啊。下面我们的context实际上它的实现是什么呢?大家看到啊,我现在大家在那看到它本身是一个抽象类。
07:03
啊,我们很可能肯定不自己去溜溜,它也没用,对吧,那我们一般用什么呢?用它的某一个实现,我们已经学过了两种。啊,一个叫activity,一个叫什么呢?Service都是它的实现,那还有一个实现,其实我们应用中有用,但是呢,你看不见。就他。是吧?那我们在这个每一个应用是不是有功能清单文件呢?大家看着啊。在功能清单文件里面就有一个配置标签,叫application。它默认就会去创建一个对应的对象。叫application对象。就是他。那你说我的应用里面有一个应用里面有几个这样的对象啊。
08:06
只有一个,因为它跟我们整个应用对应吧。好。那就没问题了,那它有三个比较常用的实现。Service这个我们讲过,我们就不再强调了,主要是看一下它。那它的这个实现。啊,有什么用呢?首先我们要看它的特点。每个应用只有一个词对象,他也就是一个什么单立的,这个好说。那下面一个contact类型对象都可以得到它,为什么说都可以得到它了?主要是基于上面的方法。它有一个方法叫get application。啊,它还有一个叫变这两个方法呢,虽然说方法名也不一样,是返回类型也不一样。
09:01
但是我告诉大家。这两个方法返回地形是一模一样的。只是生命的时候不一样。这是个什么意思呢?就是你你是同样的方法对吧,大家看到。啊,这个地方我get application和get application context返回类型,一个生的是contact contact,一个生命的是application。他们俩这两个对象什么关系啊?是父子关系啊。P说,啊,就好,声音说是这两个对象,我能不能相等它们俩?你说最终访问,这可不可能相等,我能不能做到,或者说?老妈这好像说我叫你说我去你去,你去叫一个人过来。啊,我让你去叫个人是吧,你只要叫一个学生过来了行不行。行吧。你不要跟我说那个学生不是人啊,那肯定是个人,对不对啊,就是这样的一个意思啊,好,等会我们来验证一下他们俩啊,可以来验证一下。
10:05
啊,不急,我们把它说完,我们就马上验证。好,这个IK对象,我们用它能做什么呢?跟他说。它是个应用全局数据内存级的一个共享容器。那容器的结构,容器用来干嘛的呀?是不是存数据的呀。好啦。来,再跟大家提一个事情,他的生命周期。什么时候创建呢?应用启动,且其对象呢不存在,它就会创建一个新的。关键是这个地方为什么叫不存在它的创建呢?有这样一个事。死亡?什么时候死亡?这里面有一个非常非常重要的东西。是应用退出,不会去销毁application对象。在我们的想法,我们点回退,回退,我的activity是不是死了。
11:01
但是这个application对象它没有。我怎么样才能让他死呢?其实就干掉进程是吧,或者在你的内存不足的时候,是不是系统自动把它进程杀死。那这种上新程连进程都没了,这些对象那肯定就没了。好,我跟大家演示一下来。呃嗯,创建一个应用叫L11。来写一下这个里面呢,叫一个context对吧。二硅谷。啊哪哪哪这呢,我就是我们的里面的启动的一个应用,这个应用呢,没什么特别的地方啊。
12:06
我们当前activity就是一个吧。啊,它里面呢,有两个重要的方法大家看啊,首先呢,有一个方法叫get application。啊,有这个方法,这是XP里面定义的。好,还有一个方法。叫get application最先定义,谁来定义啊?看定义的那看啊,一个返回生命的是application。啊,一个返回生命的是contact。好了,现在呢,我在这里面啊,就打印得了啊,打印一个信息,我打印什么呢?打印它俩是不是很等。那恒等的话,如果它为to的话,说明什么?指向同一个对象吧。
13:01
啊,就是同一个好啦。啊,先先写个等于吧,啊,再写个等于好了。来这个地方要把后面的给用一个什么括号给它括起来是吧,好来看一下啊,我给它运行一下这样一个式,非常简单的一个东西啊。让他看到这样一个问题。嗯。我聪什么是人事的呀?那得改一改啊,改的话在这里面改啊。是吧?18对吧。是不是变了?嗯,变了以后好了,关键现在。逃脱。这里面。是吧?
14:01
18。没报错了呀,这里面就没有问题啦,没有问题啦,有时候还是个麻烦事啊。一招不慎。嗯,这样没关系,刚才应该就等着19把这个改成八。600人之教。运行。有印象吗?呃,这个里面诶。我有一个,我有一个fair的O的SDK,也就是说我们这个SDK什么。太老了。真受不了他啊。
15:13
来我们来看一下启动了对吧,来我把它退出一下。把它打印一下。是什么对吧。初怎么样,那就是他们俩是很等的呗。对不对?说明他们得到了是同一个对象的引用。对吧,嗯,就是。这是正常的。啊,那他现在用的是系统创建的这个,那有的时候。我们想自己写。你说我要自己写,怎么写?有一个嘞。叫my Apple可以写好另一个M,你可以写它这个地方要去记什么。
16:02
Application吧?好,写了。卸载以后呢,在这个地方啊,我可以把构造方法给他去写一下,给它做一个打印输出来看一下它是不是创建的这个对象。再一个呢,它也是一个应用组件,只是不是我们四大应用组件之一。你觉得他应该有个什么方法?啊,有一个方法叫RA的方法,但是它没有destroy。啊,可以让大家看到你说我这么写的,他会用我的吗?会吗?不会。啊,这怎么会呢?你他哪知道你在哪呀?对吧,你什么配置一下,你说通过什么属性来配置呢。
17:00
是不是name属性呢?比他吗?全类名。好了吧。好,现在呢,我们就要去运行。八嘎。Iic对象创建。他创建,那说明你说是application先创建呢,还是先创建。应该是吧。嗯,因为应用先启动嘛,启动它就会创建一个对应的对象。好啦,我跟大家演示一个东西啊,我退。Activity肯定死了吧?但是现在就要想到application有没有死。来进去一下就知道对不对。有吗?没有好,我可以做一个事情。是把这些干掉啊,主要是干掉我刚才那个应用的进程吧,好现在我再进去。
18:02
啊,这些只能在里面应用啊,对吧。呃,我的叫。L11这个吧。Still。是不是重新上线呢?能看懂吧,嗯。好,这样大家应该能够看出来它的生命周期啊的一个概念。好,我们现在主要测试它。好,怎么个测试法呢,大家看看啊,我们呢,有一个自己的啦,譬如说我要保持一个字符串数据,我一般会这么写。Private,对的,提供一个。Get下载方法。好了吧,好听好了以后呢,在这个activity里面。我来去保存数据。将数据啊在application对象中保存数据来怎么保存呢?
19:11
那你直接调用它,它有这个方法,有set方法吗。没有,那此时我需要把它。强转一下,变成我自己的。Application对吧?MYAPP等于application做一个。强转接着。点set date对吧,好,假设我就写一个点。com,现在保存数据了吧。啊,这是说在某一个X里保存,我可以去另外一个组件里面取。另外一个组件,我整一个什么组件呢?关键是假设我现在呢,要去启动一个服务吧,我在服务里面去等一下,现在我启动服务来。
20:03
启动start service,又一个intent来去创建一个service啊,比如说就叫my service.class可以吧。好啦。看着把它呢,给它创建出来。创建一个plus。去继承于。对吧,好,那我一启动会掉哪个方法。On吧,嗯,对吧。来啊,或者说啊,你要想那反复的它都能用,那也可以什么用什么on start command里面去取对不对,那这里面取了能反复的取到,哎,不是这一个。On start command在这里面取了能够更好一些。
21:01
好,在这里面我怎么去取数据,我想去取保存的数据,取保存在application对象中的数据,你是你,你得干嘛得到F对象吗?你要先得到这个对象再去取吧。好,来看一下怎么得。Get。I。或者我我这次我用它。我还偏偏不用这上面这个。开始我是不是用这个用的,这一次我用这个。我还是要把它传染,为什么呀?My application application可以吧,做一个前段。接着我去取数据,这个就比较简单了,Get date。
22:01
返回一个,对,那我可以在这里面呢,写一个打印输出。啊,这个是service里面的。是不是取出呀啊,得到的这个date塔等于多少啊,把这个贝塔打印出来。现在啊,如果它能打印出来,是不是说明我们两个组件里面看到的是同一个F可以对象啊。好,现在我们来看看行不行啊,现在需要还需要做一个事情,就需要去配置一下service。Service里面呢,有一个犬类名,把这个犬类名呢,给它配一下。好了没?好,来试试。
23:02
有吗?是不是有啊,而且我过去。我再次进入是不是也应该能取到啊。看看是不是有啊。能够取到。因为我们所有的应用组件是不是都能去得到我的这个IK对象啊,所以它最终就成了一个共享的容器。啊,可以往这里面呢去保存数据。只要你进程不死,他一般也不会死。啊,除非说你的内存完全不够了,那系统呢,会杀掉一些后台的进程。这是我们的application。现在说到这里。
我来说两句