00:01
哎,先,我们还是一起来。回顾一下上一次学的东西。上一次课呢,我们主要是讲了四大组件之一,Activity。啊,包含以下的几个知识。第一个呢,Activity理解。第二个是intent的理解。后面啊有几个in的一个使用activity使用主要是相关的一些API。就在后面有一个叫active的生命周期。啊,现在呢,大家只需要有一个基本的理解就OK。不会影响到大家去写activity。下面有两个在面试中经常会问到的两个概念。一个叫任务站,一个叫加载模式。最后呢,我们去做了一个应用练习,打电话发短信。好,我们先来看第一个。Activity理解。首先得说我们翻译过来叫什么活动对吧,那活动它是一个四大应用主节点之一,是吧,叫四大写一下啊应用组件之一,好了我把这一个弄成。
01:16
选择啊来。第二个要理解的是它的作用,作用是什么?啊或者提供啊提供什么呢?是不是首先来说它是提供界面的吧,但这个界面有一定的要求。啊,能什么让用户操作并与之交互的界面,对吧?嗯,提供这样一个界面。好了,还有一个概念比较重要,就是组件。大家知道刚才不说应用组件吗?那组件是一个什么东西,它有什么特点呢?啊,组件的特点大家需要去知道。
02:05
嗯,在这里面呢,我就不一个个说了,我们来看一下。再见。啊。就是必须继承于特定类或者实现特定的接口啊,这一个组件的特点,我们前面是不是通过是来总结的。嗯,因为我们学过啊,需要配置啊,不是六的是通过系统自动创建的,那这里用到一个什么技术啊。是不是反射呀,啊这。面试的时候或者笔试的时候,可能会问到一个问题,就是说你在应用开发中什么地方用到过反射的技术?嗯,现在大家可以想一想这一个问题啊。啊,我先把这个做下来以后呢,我就跟大家一起总结一下,看到现在为止哪些地方用到过反射。
03:02
嗯,啊,可以说一下第四哪些地方,因为这个比较重要啊,用到反射什么时候用到反射了。那现在可以想了啊,连接数据库那个是GDP说安安卓里面的啊。他肯定会是问你Android里面的哪些技术用到了反射。大家就想,一旦有配置文件,那肯定是用到了反射。对吧,啊,配置文件中去配置什么配置全类名吧,我们现在是配置activity全类名呢。啊,还有什么。还譬如说我跟大家说一个啊,在这个里面呢,我们是不是有可能要去定义布局文件呢,是吧,好,布局文件中是不是定义了很多标签啊,定义标签那些标签我们说是标签名是些什么名字啊。
04:13
啊,我们可以随便打开一个都可以啊,大家看这是不是都是一些内里呢。哎,有人可能问老师,你就给一个这样的一个类名,他能创建对象吗?来,因为这是系统级的吧。这些类是我定义的吗?不是吧,系统知不知道它的前面的报名呢。是不是知道了呀,啊知道前面的报名在里面,看着安卓一点什么。View。所以说呢,他为了简单起见,他就把前面的包名给了什么省略了,其实他这种思想啊,这一个这个是view里面下一个是吧,Valegate啊好跟谁的思想一致了,其实就跟我们这个里面,我们一定要写全内名吗。
05:04
是不是不一定呢,可以把什么省略啊。包名,因为他知道可以从上面的这个pack属性来得到那个类的。报名吧。对吧,这是它的一些特点啊,他自己去定义的类,他是知道在哪的。那如果我们自己定义的呢?譬如我写了一个view,写了一个类去继承text view,我能不能去写一个,譬如说我写了这一个类叫my text view。我这么写,他能知道吗?我要自己写的。他是不可能知道的呀,对吧,那那个时候我必须得怎么做,是不是写全类名呢。嗯,就是这样的一个意思啊。好,还有哪些地方用到了呢?啊,我们还有一个地方用到了,就是显示意图。还记不记得我们显示意图是怎么创建的,想想啊,就是intend调它的这个构造方法里面传两个参数啊,一个是看对象,还有一个是不是class啊。
06:17
你说这是反射吗?是你用到了反射的API,怎么可能不是反射技术了,对不对?嗯,那至少到现在为止,我们安卓里面有三个地方已经用到反射技术了。这是这个大家也需要去了解,因为在面试中经常会有可能会问到这样的一些问题。好,这说的是activity的理解,下面说一下intent的理解。首先intent怎么翻译来着,叫意图。对吧,一图好了。
07:01
那意图他我们还有一个对他的一个称谓,我们说它是一个什么东西,信使对吧?啊信使那是这个地方就有一个问题啊。是谁与谁之间沟通的一个信使了?啊,有三个组件,Activity service,还有一个broadcast receive3个组件啊,通间通信的信。就这样的一个意思,好。下面另外一个概念呢,叫意图的分类啊,你要跟着我的思路走啊,哪些。一个是显示,还有一个叫什么影视对吧?好,那我们什么时候用显示图呢?还记得吧。
08:06
操作当前应用自己的组件,我们现在只是去操作activity吧,后面是不是有可能是service,也可能是broadcast吧?啊,当前我们现在只是操作的,不一定是activity,这里面要记住一个是啊。好,那什么时候用隐私呢?很简单。把当前。啊,改为什么其他应用。对吧,譬如说我们通过我们的应用去启动打电话,对吧。那个时候是不是其他用的,嗯,对啊好,下面就是关于intent的使用和activity使用,先我们来看intent的使用。啊,一个类它的一个使用分为几个方面啊,第一个你看着啊,我们inter首先你得创建吧,创建。
09:08
创建它以后再去使用,使用它我们来看一下,哎,使用它有哪些呢?第一个就是它有一个概念叫携带数据,它既然有携带数据功能,那我就可以从中什么是不是读取获取数据啊啊读取数据好我们来看一下,一个来看啊,现在开始创建。怎么个创建法呀,六什么呢?这个地方主要我知道肯定是六啊,关键是我们是分为显示和隐示的,区别不一样吧,啊来试一试,我把它倒过来。打开R。来显示意图,我们那个构造方法是怎么整的?Intend里面刚刚说过了,是吧,传一个context context传的是谁?
10:02
是不是当前he对象啊,啊,大家也不要一直想着this啊,因为有可能不是意思,对不对?嗯,好了,还有一个就是我们刚才说的class,诶这个class是谁的class啊,是不是被调用那个activity类的class呀,好,我们也可以这么写activity class。对吧,好,下面来影示意图里面传的是一个什么action,是一个手串吧,啊action,那个action他去找谁去与谁匹配了。与activity的什么东西匹配?啊,是不是有一个叫intent filter的什么action匹配吧,Action匹配。
11:01
嗯嗯,就这样一个是大家需要去知道啊。下面就是携带数据。它这里面呢,有两种类型的数据啊,一个叫额外数据,一个叫有特定前缀的数据。啊来先来看额外的,额外的怎么放的呀,用什么方法put after X对吧。有几个参数。两个参数,一个是它的name name,我们把它称为什么标识,或者叫见对吧?啊标识,其实用这个名字你可能看起来更爽。K对吧,一看就是标识好了,接着是叉叉叉类型的value,这个value类型是不一定的吧。
12:01
嗯,好啦,那我要说一个是内部用什么形式来保存,内部用什么呢?Map容器保存是吧,大家知道要知道这样一个事,嗯。好了,来看着啊,我有保存数据,那肯定有取数据吧。那额外数据是怎么取法呢?啊get一定是get数据吗?那不一定,这个地方是不是差到它类型了,After传一个。是不是持续类型的K呀,返回类型。是不是差的差类起的啊好那。得到额外数据,下面有一个有特定前缀的数据,还记得那个叫什么set date,那里面它传了什么类型的数据,还记得吗?叫UI,这个UI内啊,它有一个是一个,其实是包含了一个字符串对吧?那个字符串比如说我们打电话还记得怎么写的吗?太冒号是不是后面写写号码呀?啊,譬如说我们去进入发短信的界面,SMQ冒号是不是指一个号码呀,那也就是说有一个特定前缀,而且中间应该用用一个什么冒号隔开对吧。
13:30
如果你没有传冒号,那你是启动不了界面的。好,下面啊,这个呢,我们虽然说没有没有去写,但是你应该知道。啊,我取数据应该怎么取。这不就是get set方法吗?对吧?返回什么类型呢说。UI是不是UI类型啊啊,虽然说我们这个没有去写,但是你应该通过我们平常写的这么多set get方法,你应该能够推测出来。
14:03
好,这是我们的intent的一个基本的使用。啊,大家去学东西的时候,应该是把知识能够像这样去很好的进行一个总结归纳啊。好,下面一个来看一下关于activity有哪些呢?首先有activity的定义,你怎么样去定义一个新的activity,第二个就是启动一个activity,还有什么。是不是结束啊啊结束一个好了,定义有了一步,大家说就两个部分,我说有两步,哪两步。啊,叫定义一个类什么activity,并实现它里面的方法吧?啊,并重写生命周期方法。好,下面还有什么。
15:02
你定义好了以后系统知道吗?我不知道在哪个里面配置,在有一个概念叫to manifest,也叫什么功能清单文件中使用什么注册了。什么标签是标签注册吧,嗯,就可以了,主要的主体的步骤就这两步。好了,下面就是启动。那启动呢,我又给它进一步进行分类,有两种类型的启动。看还记不记得叫一般启动和什么带回调启动对吧?带回调启动啊,完整一点应该带回调方法的启动,这个回调是不是指回调方法呀。嗯,好了,一般启动怎么个启动法,大的activity对吧?传的是什么类型的对象是不是intend,刚才我们已经说过了,对吧?啊intend好,如果是带回调的启动。
16:10
Start activity for result,好,这个地方图肯定要传一个end的,这是必然的。除了他还有什么?有一个叫是不是叫请求码的一个int值啊,嗯,这个请求码在哪地方用呢?我们除了去写它,还要去重写一个方法,重写什么呢?叫on activity result对吧?哎,它里面呢,会涉及到几个参数。啊,三个首先至少有一个request code,它里面的参数呢,我们可以先不写,我们先把这个结数先写了,把结束先写了再说,结束呢,也分为一般的结束,一般结束怎么结束finish就可以了,对吧,下面还有一个什么结束。
17:05
是不是带结果的呀啊或者带返回的啊,带结果的啊,带结果的怎么结束,在结束之前得调用一个方法。叫set什么result吧,保存一个结果,那这个结果里面呢,有两个参数,第一个是int类型,叫结果码,对吧,还有一个。是intent类型,我们给它取一个什么名字呢?Date。这个intent用来干嘛的呀?是不是携带数据的呀?好,那携带数据,这些数据会交给谁呢?是不是交给这个回调方法呀,好,那交过来肯定通过参数交过来的,有int类型的结果码,还有什么intent类型的date。
18:00
重选这样一个方法去得到返回的数据。嗯。这样我们就把activity里面一些重要的方法跟大家说了一下。下面一个就是activity生命周期。啊。这个生命周期呢,有两个事情大家需要去知道,一个是activity界面的状态,界面的状态啊来看一下。往前翻一页啊。这里运行,停止、暂停,停止死亡。每一种状态。他都会从几个方面去看,对吧,是否可见,是否操作,是否存在对吧?嗯,有了这一个基本的理解以后,你才好去看那个他的生命周期的一个调用的一个过程是什么样子的。
19:01
好,把这一个我就切在这里啊。这里面一共有四个状态,好,那下面一个呢,是关于它的啊来嗯。这个里面还不好搞。来下面一个呢,就是关于他的生命周期,我把这个给整一下啊。来看一下这一个。是关于activity的生命周期方法啊,生命周期在这里面呢,主要是有一个图。啊,应该说我一共呢有两个图,一个是系统提供的一个图。
20:00
啊,在文档里面提供的,我觉得下面的一个差啊,我把这个图呢,给大家截下来,让大家看一下啊。这个里面呢,主要是把生命周期方法和界面的状态。把它留着。放在这里。每一个过程呢,它都会调用一些方法,嗯,大家需要大家仔细的去自己的揣摩一下,在这个里面,我们前面说过它呢,我们有几个重要的,只是很多方法我们暂时不用啊,有三个重要的方法,一个是on create,还有什么on resume,对吧,还一个on destroy。啊,用来用去呢,我们用这这三个方法用的比较多。啊,这三个方法比较特别,说一下,这一个方法是用的最多的。啊,我们一般用它来干嘛呢。
21:01
是不是做加载布局和初始化的工作呀,初始化的工作这个是必然会用的。下面两个方法有时候会用啊,用的少一些,好先说它,它的特点在于哪个地方呢?安,我为什么单独把他给提出来了?就是说我最终有一个状态叫运行状态吧。在运行状态之前,必然会经历什么方法,按这种方法啊,只有经历此方法。才进入啊运行状态。好,下面一个这一个。怎么治疗?在什么对象死亡之前吧,啊,死亡之前调用这它用来干嘛呢?它用来有时候需要去做一些收尾的工作,做一些清理的工作,对吧。
22:21
嗯,收尾或清理的工作吧,嗯,这是这几个大家需要去知道啊。好,下面一个呢,是它叫任务站和加载模式啊,先来看它。啊,首先你得知道站的结构是一个什么结构啊,就是这个task sta,就是sta这个结构有个什么特点,那句话怎么说来着。后进先出对吧,你别先说先进后出啊,那个还是有一点点小差别的,嗯。
23:02
好把它给看一下啊,看到在这里面有几句话啊,记住就行。嗯。大家自己去需要去看一下啊,我把它先放这里好了,还有一个呢,就是我们的加载模式,这个加载模式再说一个什么事情呢,我找个人问一下这加载模式,再说一个什么问题。啊,随便找一个人,你聪聪。不在是吧,李健。在吗?你说一下家长模式在说一个什么东西?那个页面之后那个。发建那个新的对象的时候。
24:01
嗯。创建调动原来创建新的,这样吧,差不多。这个加载啊,你也可以把它想成另外一个概念,叫创建模式。对吧,是新建一个呢,还是用以前的。就我去start activity对吧,我是不是要启动一个新的界面呢?那个界面如果已经存在了。我到底是用以前的还是不用,或者说什么时候用以前的,什么时候不用以前的?对吧,这地方一共有几种模式来着,四种模式。啊,我们默认呢,是标准模式,每一次都会创建啊,还有一些其他的模式,这个地方比较特别的是它。啊,Single instance,我们来说它的效果是让人好像是觉得不可理喻的,对吧,嗯。它的特点很大一个特点就是它会在单独的一个站里面。去创建,而且那个站里面呢,不会有什么其他的对象。
25:06
因为这一个呢,是在我们手机微视里面就要用到它,所以呢,需要专门给大家说一下啊。二。这个我就不再一个一个去仔细的去说了,需要大家去看一下啊。所以这么在这里面啊,最最重要的就是我们的一个基本的使用,你要会使用。你说其他的重不重要,其实也挺重要的,你譬如说前面的一些理解。所以说我们最终啊,都是为了去使用activity。下面一个啊,每每一次课呢,我们都会有一个练习,练习也是大家必须得去掌握的,好,我们这个练习呢,是用来去打电话和发短信的啊,功能呢,我就不再一个一个说了,我们来说一下对他的一个啊总结,看看里面有哪些重要的部分。
26:10
啊,我这一次呢,再跟大家强调一个东西,就是编写啊,实现一个简单功能的。嗯,界面应用吧,应用的不足啊。所以我们有一个简单的一个应用,它点进去有界面,界面以后是不是有一定的功能呢。我们跟大家说过。其实做一个功能呢,就分为两个方向。不知道大家还记不记得,一个叫外观,一个叫什么行为,你别看它就这四个字啊,是对大家挺有帮助。什么叫外观呢?很简单,就看着是个什么样的,对吧,那我们外观上面我要做什么事了。
27:04
是不是要分析界面定义布局啊,记住了要分析界面组成。啊,定义布局。其实就这一个事,在你去写一个布局文件的时候之前,你先要把整个结构分析好了,你才能写。这个没问题吧,嗯。好,布局定义好了以后,我是不是很轻松的就能显示出来吧,好,那下面呢,就是行为,行为其实主要是去实现什么呢?去编写什么呀,Activity这意思吧,编写activity的实现,好编写activity的实现啊,重点的部分啊,它的流程呢会比较多一些。啊,我来再来一个一个写一下啊第一个。
28:00
我们至少要把界面给它加载,布局文件给它加载进来吧。怎么加载啊,在哪个方法里面on create方法里面中加载啊布局文件对吧?用的就是什么吧?加set content view是不是指定布局文件的I啊啊指定布局文件的ID,它的唯一标识这个ID并不只是的这个ID啊。你们看到ID就想到他了,这时候说的ID是说标识知道吧。啊,不是指的什么,R减ID是这个ID。啊呃,怎么写正常应该怎么写啊,点lay out,点叉叉叉吧。这个时候说的ID是它的唯一标识的名称。啊,大家要记住这一个东西啊啊。下面接着干什么事?
29:01
这个流程基本上差不多,接着调用什么方法去做,你就说吧。掉队调用find of you by ID去得到。什么需要操作的所有视图对象?B、保存为什么变量?是不是,嗯,别说全局变量啊,那个不太好,成员变量对吧,好。是吧?这是我们啊一个基本条件下面。下一步做什么事?是不是监听啊,你要有行为嘛,对不对,其实前面都是准备工作,懂意思吧,就在这第三步了,给视图对象添加。是不是世界监听呢?啊,添加监听器啊,设置监听器吧,我说添加,因为它set对吧?啊设置监听器,这个监听器有哪些类型的监听,我们现在学过了。
30:11
点击或者什么长按啊,那你设置的监听器是不是要实现它里面的在回调方法中实现有一个概念叫响应的逻辑,我点一个按钮是不是做一个事啊,譬如说我点击打电话。是不是要进入拨号界面?哎,这就是他的一个逻辑。那个逻辑具体怎么写,那要看实际的情况,对吧,也就是说我们上面这一套流程它是固定的。那你就要把这些特别特别固定的一些流程给他弄得特别熟练。至于你会不会实现打电话的那个啊,那个intent啊,那个action,那其实不特不是特别重要。
31:04
啊,重要的是你这个基本的流程,你会不会。好,下面一个啊,在这个应用里面呢,还有一个就是使用啊影视意图。启动系统应用的界面,对吧,比如说我们启动打电话的界面,启动拨号界面,启动发短信的界面。这些是不是都是系统应用的吧?嗯,那这个里面需要大家注意一个什么事情呢。一个很重要的东西就是怎么样去找到艾格。Action是不是实际上是个字串呢?嗯,字符串那个时候我们怎么靠谁呀,有要有两个,一个是我们在log日志里面。
32:06
添加什么log日志,Activity manage的日志是吧?那个日志有了他的帮助,我们做一个什么事啊?我们是不是要去启动那个界面看一下。他到底是启动哪个activity吧,啊,这个时候还要利用谁来去帮助我,是不是叫系统应用什么源码。找到对应的activity的配置吧,是不是找到配置以后就可以找到它的那个action嘛,嗯。这个。是比较重要的一个东西,大家需要去给他找到。嗯,好啦。啊,第三个就是我们涉及到权限的问题。
33:02
权限,就是说我们什么时候需要权限呢?这个东西还不好做一个明确的定义,就是操作一些系统比较重要的一些功能的时候,就需要权限。哎,你说老师到底哪些功能呢比较重要呢。这个东西还真不太好说,哪些功能是是必然是重要的,对吧,至少我们知道一些啊,我们现在知道了,打电话什么发短信,别人说老师你怎么知道他重要呢。他报错了,你甚至可以这么认为对吧,或者说有可能涉及到啊,嗯,收费还一个泄露隐私。就可能涉及到你读取数据,譬如说我现在读取你的短信数据,读取你的联系人数据,这个肯定是需要权限的。你想嘛,要不要有没有权限限制,任何应用是可以随便读啊。太毒了,是不是偷偷的传到网上去?
34:02
那样的话就太不安全了。权限。就是当。调用一些系统比较重要的功能时。啊,需要声明这个不用太记,为什么不用太记了,是因为它本身你要不加会怎么样。会报错是吧,通过他的异常的信息我就能看出来对吧。你要记,你也是记不住的,因为太多了,后面会越来越多。那你大概知道啊,你肯定有时候那个你去面试的时候。那个项目经理或者是面试的人就问你。你说一下你曾经用过哪些权限?有的同学一下就懵了,说不出一个来。那这还像开发两年的工程师啊?啊。
35:00
对吧,你怎么着,我随随便便都可以说,说个五六个对吧,应该让他感觉就说的特别轻松。再不济你磕磕巴巴也能说出两三个来,对不对?啊,最后说一句好长时间没用了是吧。啊,这里面是重要的三个,其他的我就不再一个一个说了。这里面啊,再跟大家强调一个,一个是activity的使用和我们的练习,大家必须得去掌握啊。
我来说两句