00:00
行,那关于这个,呃,我们这个invite fragment里边这三项呢,我们就写好了啊,那下边要再讲的话呢,就具体这每一个呢,比如product list啊,这个这里边这个效果,呃,在讲这个之前的话呢,呃,我们呢,已经确实也说了好多关于这个contest,包括它这个具体的实例的问题了,下边呢,我们就把这个contest这个类呢给大家讲一讲。啊,专门来说一说,他从我们第一天讲安卓的时候呢,就用到了这个contest,我们当时写过那个toast。啊,那这里边儿呢,我们来看一下具体的下边的这样关于context的一个说明啊。好,首先呢,是关于这个con的一个理解,说cont呢是提供了关于应用环境全局信息的一个抽象类。这里提到它是一个抽象类。哎,那就意味着呢,你肯定不能实例化了啊,用它具体的子类啊,通过他的对象呢,可以啊,才可以获得获得操作系统或者是应用的相关资源。啊,这是里边提到这样心理,怎么去理解这个事儿,下边就有啊。
01:03
使用它的两个场景,注意我们使用con,其实总结一下就是两种情况。第一种情况呢,就是我们直接来调用con下的一些相关方法。那有同学没有注意到说我们调过哪些方法,你在it里边我们调了很多方法,比如跟数据库操作相关的一些,其实很多呢,都是contest下的,包括呢,我们试图嗯去呃,开启一个activity啊,开启一个服务啊,发一个广播呀,其实这些方法也都是contest下定义的。啊,这呢,就是我们说C下常见的这些方法。啊,这块呢,这这都比较熟了啊,一看这都应该很清楚,获取资产目录,获取系统服务啊,获取一个啊内容一个解析者啊包的一个管理器,这呢涉及到数据存储相关的啊,这涉及到你注册。广接收器啊,解注册广播接收器啊,这些方法呢,都来自于con。
02:02
那很显然,如果没有菜的这些方法,那你这个点起什么也做不了。啊,所以我们用它的第一个场景,就是用它下边的方法,这些呢,就体现为我调用操作系统或者是呃,应用的相关资源了。啊,像这些就是都算资源啊,啊类似的。啊,那第二个我们使用的场景呢,就是将contact作为实参传入。想想都有哪些?嗯,都有哪些具体用到的。Toast用到了吗?To里边第一个参数是不是就是,嗯,还有。加在一个布局V点,哎,In的时候第一个参数也是还有吗。嗯,我们new一个在代码层面,我new一个test VIVO。需要一个吧,嗯。还有。
03:01
又一个alert dialogue.build build后边是不是也有一个content?哎,等等,类似的有很多位置都用了。当时这个大家这个刚学的时候呢,可能不太懂的就是这一块啊,说这这怎么老师整个contest这都没见过是吧,不也不知道他到底是个什么,见到坦我们就直接写个S啊,实际上呢,是不是拿那个充当的呀。啊对,因为它这里边呢,实际上是本质上来讲,也是调查下面相关的这些结构了啊,所以我们直接呢,就每次往里传,也没有深入的去说啊,它是一个什么情况啊,下边呢,就主要来说一下这个事,哎,主要的两个场景先清楚来,下边我们再接着细节的再来说一下啊说contactl最主要功能就加载和访问资源啊,这里边就刚才把这些方法呢,给他再重新捋顺了一下,那一方面呢,叫启动或停止itd或service的啊,然后呢,呃,发送广播呀,或者注册广播接收器啊。啊,这个然后呢,这个加载布局这呢,就涉及到它作为参数存在的一个作用了啊,哎,刚才提到的这个情况,这个情况这个情况。
04:09
啊,这都已经讲到了。然后另外的话呢,还可以叫换获取应用的全局环境信息啊,这里边儿就涉及到这样的一些操作。啊,这些操作这里边儿呢,我们关注一下,其中有一个呢,叫get application contest。Get contest我们用过。在我们的my application里边,这个con是不是就在这用了?它获取到的呢是一个contest,但我们知道contest呢,它是一个抽象类,既然你是一个具体对象,肯定不是它这个类本身造的,那一定是它的子类的对象,对吧。那这个子类到底是谁?哎,是application。啊,然后呢,我们在这个Java代码层面啊,还在或者具体说在activity里面,还可以通过叫get application这个方法获取这个application。
05:07
啊,有点绕,那我们来这样写一个测试哈,跟我们当前写这个工程就没有关系了,我们在这个基础上再去造一个model。就是关于我们的一个测试的。好下载好以后呢,把这个我们改一下啊,给大家听听。嗯,先把这个没关的这些我们先都给大家close off一下,Close off。
06:00
然后这个布局呢,先打开啊,这是我们这个main activity,就是我们新造的这样一个module的这样一个主页面啊,这呢,我们把它这个构造器呢写一下。那这里边儿呢,我们加上一个log啊。改成个一吧,红色的好看一些,嗯,这是一个空调器,这是on create方法,On create方法呢,我们这里边也给它加上一个log。嗯。行,嗯,这个加完以后,我们再怎么着呢,我创建一个跟我们写的一个工程一样啊,造一个呢叫my application。继承于产评审,这呢也是提供一下这个构造器。这一下,这是构造器,再呢,提供它的on create方法。
07:07
行,这个呢,我们就写好了,然后呢,在功能清单文件当中。使用。好,使用了,使用以后呢,回到我们的my main activity,在main activity这里边,刚才提到两个方法,第一个方法呢,是con里提供的,那我们activity作为词类呢,也可以叫get application。Contest返回的呢,是一个contest。好,这是其中一个方法,另外的话呢,在我们activity里面特有的自己的这个方法叫get application。返回的呢,是一个application。那我们说这两个对象实际上一样,我们可以验证。Contest是不是等等于?Application。
08:03
那就这样,我们来验证一下这个是个处还是个false啊,是不是通过地址来判断啊。啊,我们运行一下,同时的话呢,大家也看一下,我们这里边这个may I Kitty作为一个组件,他对象的创建,你说是他先造啊,还是my application先造啊。那应该肯定是他先到,你看从这个关系上来讲,是不是先有我后有你啊,我这是不是相当于是你的一个副,你要从视图角度就相当于副视图了,是吧?那先得有这个上一层才能有它内部的这个子子啊来我们运行着看看是不是这样一个情况。那赶紧听一下啊。嗯,挂了是吧,这里边我们得改下这个斗盘。嗯,就改成是。嗯,这个。
09:02
同步一下。再来。好,这出来了啊,出来这呢,加上一个T。看一下那my application构造器调用on create的方法调用,然后may at材构造器调用on才调用。而且这是一个出。对吧,哎,我们通过这个呢,就可以总结一下刚才说的这样几个小知识点,哎,我们这时候呢,实际上就在讲这个activity跟application他们的一些信息了啊。啊,首先第一个点呢,我们说呃,Application对象的创建。
10:07
哎,要早于。啊,这个,呃,所有的。这个activity。对象的创建。在这一个问题哈,然后第二个问题呢,就是我们通过这个方法。啊,Get application contest啊好。啊,和我们在activity里边。哎,天体里边前面这个方法呢,是我们里定义的啊。它这里边呢,和这里边儿这个方法返回的呢,都是我们当前这个应用啊,或者就是我们这个application这个对象。返回的都是。Application对象。
11:00
这是第二个问题,好,第三个问题,第三个问题大家看。我把这个呢,我们听一下啊。当前我们这个application和我们的activity对象呢都创建了,我点一下返回。啊,那此时呢,意味着activity是不是销毁了?I销毁了。那这时候没有什么打印哈,我现在再进来进来大家看一下,这个时候呢,一会加一会调用哪些logo呀。看一下。Activity呢?重新造了可以理解,Application呢?没有,因为你当前这个应用是不是还在进程当中。还在进程当中,好。把它呢,关掉。然后这样一下。这是不是就清了。进来以后呢,我再点啊,这个我们听一下。再点什么呀。
12:03
能理解吧,进程没有了吧,所以呢,是不是又重新造啊。哎,所以在这描述一下啊,说我们这里边这个。现在这个实力。哎,它呢是随着进程的,呃,或者或者随着这个应用加载到进程。啊,应该说加载到内存中变成一个进程了啊,那随着呢,它加载到内存中啊,那此对象创建。啊,那它也有生命周期方法啊,然后呢,哎,方法呢调用。说只要当前的这个进程存在,说此对象呢。是不是就存在啊,啊说如果啊进程啊销毁。啊,那此对象呢,那就销毁。啊,那只要你这个进程存在,那这个对象存在,而且不会再造,所以说这里边儿呢,关于我们当前这个application是不是就是个专利的呀。
13:05
啊,就这样的情况啊,而我们这个FT呢,就是你技能可以在,但是呢,你只要你F一点返回销毁了,那这个你再进来就得重新造了。哎,所以呢,从这个层面上来讲,哎,我们说这个,哎这写个四啊。这个application。呃,他的这个实力的,呃生命周期是不是要,嗯这个较大于好像也不太合适是吧?呃要早于,呃所有的是不是其他组件啊。组件,哎,生命周期要早于其他组件啊,并且呢,是不是可能也要晚一样,就相当于整个它这个存在的一个范围是不是要更广一些,具体的这里边service也好,还是it也好,他们的生命周期都要比它短啊。啊,生命周期要早于并且呢。
14:01
嗯。你要说晚也也也不一定有可能是都一块儿销毁的啊。那就相当于他整个这个生命周期。常语吧。长其实也不合适哈,你能懂这个意思就可以。对,创建的早,然后销毁的也是最晚的。就这样写吧。理解这个意思啊。嗯,啊。嗯,对,实际只有一个,这不是上面单利已经说了,嗯,好,这是我们说的这样个事情哈,所以呢,我们在咱们自己这个项目里边呢,哎,我们造这个application的时候呢,哎,我们在这里边就可以通过这样的一个方法。哎,通过这个方法,哎,那获取到这个它呢,实际上就是我们所说的上下文对象,就是我们的application这个实例。哎,或许就是它啊,那我们在这个程序当中造application my application这个意义,其实我们当时造它的时候也说过了,既然你的生命周期呢,是比较长的。
15:05
啊,那我们在整个这个生命周期过程当中,你出现了一些组件,这个组件之间呢,我们当然也讲过数据是不是可以传递啊。那数据传递呢,我们是放在那里啊。对吧,哎,那如果有一些数据呢,属于他们共享的啊。就是我这比如这个activity,一可以用it,二也可以用service也可以用,那你共享的这些数据我们放在哪啊。是不是就可以考虑放在这个类的实例里啊?啊,因为呢,你的生命都比较早嘛,我通过任何一个组件都可以调到你,那你呢,就看成是一个共享的一个容器,所以我们这里边呢。嗯,我看在这提到说这句话了啊。就这句话。哎,可以理解为叫应用全局数据内存及共享容器。有点绕啊。哎,把这呢,我们体现一下,嗯,说这个M。
16:07
哎,它呢,可以理解为。或或者叫可以看成啊,是应用全局数据啊,内存及共享容器有点绕,你就直接记住它是一个啊,全局的一个。哎,共享容器就行了,那就意味着我们比如说咱们这呢,自己写了一个叫my application,我在这里边呢,我比如说就存一些数据了啊,随便写一个词缀类型的。哎,我这呢,就写个给他。嗯,然后呢,我下面呢,写这个的改善方法。哎,这呢就相当于是有一个数据,然后的话我们在my application当中啊,这呢,我们不是通过你不管是哪种方式吧,我们就能调到这个啊my application vacation了。这个application其实就是我们的my application。
17:02
为了调人这个方法,我做一个强转。好,那这呢,相当于是一个获取。那它的一个实例啊,啊,下边呢,我们可以设置其内部的数据。内部的这个数据来我这呢,拿着这个application,我这不就是有一个叫set data,在这里边呢,我就可以写一个文本内容。啊,写一句话啊,写一句网络流行语吧。这个。友谊的小船。哎,就话那就写这句话吧,把这些数据呢,我们就通过,哎,你这个具体的一个activity哈,我设置给了我们这个生命值比较长的这FT行,然后的话呢,大家看我在我这个FTT里边,我们说是不是可以去其中一个服务啊。
18:12
举例子啊,我这儿呢,我造一个服。用一个具体的一个service选第一个。来,我先去用MY吧,然后分。啊,Service里边我就用start方式吧,Start方式就不调这个了啊,是不是就会调这个on create,或者你这个写这个on star front也行啊。哎,在这里边呢,哎,我们可以做什么事呢?我们这把它称作是一个内存器的共享容器,那我是不是可以直接在这里边,我去get一下,首先这个X service也是一个con的实例啊,我这点get。Application or contact都行。嗯,然后呢,把它呢,强转为一个叫。MY,哎,那我站这,我如果去log一下,上面先做一个强转啊。
19:05
先这样吧,先呢,application.get data。哎,得到推塔,然后呢,加个log。哎,这样讲,哎,你说我这个能不能获取到数据。可以吧?哎,是可以的啊,哎,我们再回到我们这个may t这个层面,启动一个服务啊,Start一个service。啊,或者这个这个启动的话有点太猛了,你这块可以呢,就是一上来下来就直接自动启动了啊,我们还可以呢,就是。哎,这呢,布局里边整一个button。信。这呢写一个S。启动服务这上写一个on click。
20:03
Start的一个具体的。来。And service。行,然后回过来,我们具体呢,写这个回调方法。嗯。启动服务。Start的一个service,又一个intend。啊,写一个this my service第2CLASS。二分啊,运行一下当前这个程序。啊,这就进来啊,这个呢没什么啊,这个我这它是个相对布局是吧,混到一起了啊,当然这个不是我们说的重点,那现在呢,我点击一下。
21:06
一点击,那是不是就获取到了。哎,这呢,这不就体现为啊,整个这个进程的生命周期过程当中,我这个application呢,作为一个容器里边呢,可以放很多的数据,你可以通过具体的组件呢,去设置他们的这个数据,然后在另外一个组件里边直接从那啥是不是用不着通过in Internet去传。哎,这呢也是一种途途径,就是说涉及到这个数据在呃,组件之间,线程之间传递的时候呢,这也是一种方式,呃,我们把这个数据放在activity application当中。好,这呢,我们就相当于是把这个application呢给大家做了一个说明,哎下午的话呢,过来我们再去对比一下它application跟activity,尤其他俩什么时候我到底应该用谁,尤其是呢,哎,当我需要呢,把这个contest当为当做一个参数传递的时候应该用谁。哎,这个我们下午的时候再来说,行,上午就。
我来说两句