00:00
我们先来复习一下上一次课学的内容。上一次课呢,我们主要是讲了数据存储的前部分知识啊,主要包括数据存储的方式。第一个接着是我们讲了一下ST存储,手机内部文件存储,还有一个手机外部文件存储。嗯。来,我们先来看一下第一个。安卓里中支持的数据存储方式有哪一些?嗯,在这个地方我们可以来看一下这个,嗯,啊一共有五种啊,我把这一个呢给大家记下来。就这里面啊,哎,等一下。把它稍微放小一点。啊,这样五种类型。啊,每种数据存储的类型呢,它都会有一个自己的特点啊来现在我就找一个人啊问一下。
01:08
就以他为例来问,找一个人问问啊,测试一下,看看有没有人知道。呃,李健。在吗?在是吧。嗯,你说一下SP存储它的数据存在哪里。啊。嗯。下面的一页文件夹说清楚啊,它那个是一个什么文件呢。嗯,啊,你再说一个问题,就是它有个什么特点,就什么样的数据适合存在SP呢。是小数据,嗯,小数据是吧,如果我要存一个图片,能用它存吗?那我要存个图片,我存哪去啊。
02:07
图片的话可以存在那个是在那个。You live because。嗯,行,挺好啊,出来吧。啊,这里面说了,一共有五种存储方式,SP存储,手机内部存储,外部文件存储,这两种其实都是文件存储的方式。啊啊,后面呢,有我们没讲的数据库存储和远程服务器存储啊,每一种存储方式大家至少要关注两个点,第一个点啊,它的位置是数据存在哪个位置了,第二个点它有一个什么特点,每一种数据存储方式它有自己的特点。嗯。后面大家才关心它有一个什么样的API,有个什么类,有个什么接口,让我们去操作。嗯,在这里面还有一个图,大家需要去重点的关注一下。
03:03
就这样一个图在说明数据存储的方式和它的一个位置,嗯,把这个给他拿过来。啊。下面呢,我们对啊下面三种数据存储方式进行一个说明啊,这个说明呢,从三个方面去看,刚才已经简单跟大家说过了,第一个呢就是特点,第二个啊,或者先说先说位置吧,再说特点,这个位置比较简单。好,第三个就是相关的API,嗯,就从这三个方面去看啊。哪一种存储方式都是这样的,比如说下面的这一个也是这样,下面这个也是这样。好,现在我们来先来看一下。
04:00
首先看一下它SP存储它的位置在哪,写上date date叫package name下面的来下面我下的知道吧,是吧,下面的叉叉点差没有吧,也就是说这个叉叉是不是一个变化的呀?啊,我们可以动态的去指定它的文件名,但是不用指定后缀。因为后缀呢,扩展名它是固定的。好,下面。就要说它的特点呢,首先它用来存储什么数据对吧?嗯,是要一个什么,简单来说就是小数据对吧?啊,小数据以什么形式存呢。K啊,是不是value啊,就是建筑对的形式对不对,也就是说你既要从K也要从value啊,而K并不是数据本身对吧,只是一个什么标识,好下面它还有一个特点,就是什么时候被删除。
05:19
就是我们这一个,除了我们可以通过方法的形式把数据给移除掉,对吧,那是肯定的,大家一定要记住,就是应用卸载的时候会自动删除数据,没问题吧?诶我们就要想了,为什么应用卸载的时候会自动删除使数据呢?为啥,因为我们这外面是不是在包名文件夹里面呢,对吧,一旦我的应用卸载以后,那个包名是不是就不存在了呀。那不存在,它就没有存在的意义了吧?
06:02
对。因为我们的应用的标识就是什么包名。嗯,这个大家需要去看一下好。下面就是相关的一些API了,嗯。在这里面呢,涉及到啊两个重要的API,一个是share performance啊,再一个就是I啊,你可以把它翻译成编辑器,其实你也可以不用翻译,有的时候大家时间长了啊。可能前期的时候,你总是希望能够把那个累了,或者接口进行翻译一下,你才觉得记忆起来比较方便,对吧,但是说实话,真正的你做了一段时间以后。你是不会对那些那些类啊,接口进行很进行很明确的一个翻译的,脑子里面记得就是那些单词,那那个英文那个类的本身。啊,只是前期的时候,在于前期的时候,可能你需要通过来去记住它的那个编辑器啊,什么一些上下文啊,这些一些类它的一个。
07:05
中国的意思来去理解它。到了中后期可能你就需要去啊,主要是关注他的那个那本身,而不是他的中文的翻译了。啊。当然要逐渐建立这样的感觉啊。好。我把这个给它去掉,这不用。啊,我先把它呢,给它解一下,以后我们再来看一下啊。大家看啊,在这里面。啊,我跟大家说一下,你去,诶有人想你看一个API,看一个接口,看一个类,怎么看呢,你怎么去去去关注它的哪些点呢,大家想。你说你一般关注什么点。我找个人问一下看看。
08:04
嗯,你这。嗯。你说一下,你你去你去学一个类或者接口或者记忆的时候,你这都都往哪个哪几个方向去看了。看看什么,看了一些方法,嗯。还了。看属性构造系啊,你就这么看的是吧?啊嗯,构造系好坐下来吧,嗯,再找一个同学啊,就是你再去你去看去接触一个新的类或者接口,或者是在学习一个类或者接口的时候,你都你都是怎么去接触它的,我到等嗯。那个嗯,刘成龙。你说一下看注释啊,它能干什么用啊,这个很重要,还有。
09:08
嗯。好方法,再逐渐看每个方法是吧,行说一下吧,差不多啊好。我跟大家说一下我的想法啊,就是什么意思,首先你得你一上来你就知道这个类和接口是用来干什么的。一定要知道,你要不知道的话。那学它就没意义,一点意义都没有,因为你想你最终是要解决什么问题对不对,实现什么功能吧,你一上来一定要知道这此类啊,它是用来做什么的,譬如说我们呢,就说它吧。啊,以他为例,大家看到我们这里面不是出现了一个接口吗。你不管,无论借口类啊,都一样的,你说它用来干嘛的呢?是不是用来去实现我们SP存储的一个类或者接口啊。
10:03
对吧,嗯啊,你说他干嘛呢。编辑器,那你就想到我们为什么有它呢?是因为我们刚才说过了SP,它本身是不是只能去获取数据啊。他不能得到数据吧,不能去保存数据或者移除数据,对不对,那这一个是不是看他能够更新SP文件的一个接口,更新什么意思,更新一定是update吗。不一定,我保存是不是一种更新,我往那个SP文件里面去保存一个数据,也是更新那个文件吧,也是大家一上来一定要知道这一个类是用来做什么,它的意义是什么,这里面其实就在说明它的一个意义。啊好,这是第一步,大家需要做的。第二步,如何得到它的对象?
11:06
就是你想啊,我们去做一些什么事情的时候,是不是都用调用对象的方法去干活呀,那你现在知道怎么样得到他的对象,比如说得到他的对象还用去记吗?不是六吗。那不一定对吧,如果是个六你不用记知道吧。六还记啥呢?所以说我是不会去记什么构造器的那个。那个太easy了,不需要我记。对不对,我需要记得就是有的时候它不是六的,知道吧,不是六的是通过别的对象得到的,对不对,不是六,而是通过别的对象得到或者创建啊什么的一系列的,对不对,这个时候你就要有一个记忆了。你得知道我这个类的对象,或者这个接口的对象是跟哪个对象或者哪个类相关联,举个很简单例子,就是我们的SP的对象是六的吗?不是它本身是个接口对吧?那它的内实现我们能看到吗?
12:15
看不见对吧,那它的实现的对象是怎么得了。我们是不是通过看取啊,这就是说的,我们要特别记了,因为我们要知道了,就是我要得到SP的对象,需要contact对象。这就是你需要去重点去掌握的地方好了。下面下面的事情就是有了对象以后,那必然就是调用对象的方法了吧,其属性呢,倒不用太怎么记,一般情况下是不用太怎么记的,主要还是方法。对吧,下面就是有了这个对象,这个对象能用对象做什么事,所说的政审是是是指什么呀。
13:12
是有一些什么样的公开的方法吧,哪些常用的方法,就是说什么意思,我这里面加了一个常用的一个类里面,它有很多公开的方法,你不用说去把每一个都去看。尤其是在Android里面。那类的方法吧,特别多,那我们可能就需要他其中的一个两个或者三四个的样子。那其他的方法在当前没有用到的情况下面,那你就先暂时不用去管它。如果你希望你的学习的方式是把每一个类的方所有的方法都给它整一遍的话,那你就学习的太累了,效率极其低下。
14:04
因为我们就是去解决问题的,对不对,要做的就是一些比较常用的一些功能。也就是说我们要用的是常用类的,常用方法去做一些我们常见的一些功能,就这样,如果有一些特别的,再特别的去看就OK了。就大家学安卓基础的时候,其实很多都是学一些比较常用的一些语法。那一些比较偏门的语法,你是现在是不用去管了。啊,甚至有甚至有的时候我会跟他说,诶,这个参数你就不用管它,传个空就拉倒。可以。因为这样能够减轻你的负担。当你真正需要,哎,我需要去了理解这个参数的时候,那个时候其实你已经有能力去理解了。但是在开始学的时候,你是很难是理解它有一点特别有难度的,知道吧,啊,那个时候你就先把它放下来。
15:01
等到你真正做了一段时间以后啊,我学,譬如说我学的第一天,我可能理解不了这个参数,对吧,当我学到第五天或者甚至第十天的时候,我再回过头来看那个参数,哦,明白了。就这样的一个意思,嗯。大家不要开始的时候就一定要说啊,把这个东西一定要冲上去学到下,把它学透了。哪些东西比较重要,哪些东西比较次要,我都会跟大家说了一下,大家尽量呢,就按照我的建议去做啊,肯定会能轻松一些。嗯。大家一定要自己可以琢磨一下,看看你们自己在学的时候啊,在接触一些啊新的类或者接口的时候,是不是这么去做的啊好。来下面呢,是手机内部文件存储啊,现在想一下位置的。啊,其实前面的位置都是什么,是不是固定的吧?啊,前面的位置都是固定的,那我们就把这个固定的位置给它拿过来,拿了以后它下面有一个非文件夹对吧?啊非文件夹下面存我们任意类型的文件都可以。
16:19
啊文件嘛,对吧,好来看一下它的特点,就是说来看它上面,它的上面说存储的是小数据,那相当于说比较大的数据,我是不是要用文件来存呢。嗯,来下面第一个数据,或者有些数据,他就不可能用用一般的数据来存,譬如说图片文件。你的图片我们不可能说用一个什么SP来存吧,因为本身就是一个文件,对不对啊,这个时候啊,必须用手机的啊,一个文件存储的方式,只是怎是选择内部的还是选择外部的,它有一点小区别,我们等会给简单的看一下。
17:13
好,还有一个特点就是它跟上面的特点是一样的,就是在什么时候会被删除啊,是应用卸载的时候会自动删除,嗯。就是这一个下面呢,是相关的一些API,好现在啊,我们就要可以去想。我们操作手机内部的文件存储,我们在想要涉及到哪些东西,我可以我们可以先想想我们要操作文件,操作文件无非就是读或者什么写,那读写文件需要什么,是不是需要流啊,有输入流或者什么输出流啊,除了有流,还有一种方式可以去实现文件读写就有路径。
18:04
我得到路径以后,能不能进行文件读写?可以吧,或者说我得到菲尔地下是不是也可以这两种方式,只这牛的方式是不是比较直接呀啊?那现在啊,他的提供的一些API啊,就是朝着这个思路去去去的。就可以去得数牛输出牛进行文件读写对吧?好下面呢啊,还可以得到那个files文件夹对象,哎,我可以不直接用上面的。对吧,我用下面的,用下面的我能不能去读写呀,可以,只是过程稍微麻烦一点点,对吧,我们是不是自己去创建文件流啊。啊。这个大家需要去知道啊,啊后面呢,我还跟大家说了一下如何操作access下面的文件。
19:03
啊,主要是读物啊,下面一个如何来加载图片文件。啊,有一个概念叫bit。Bit map,我们说它是一个什么对象?是不是叫图片对象吧,啊图片对象,那图片呢,就一个bit map对象,它对一张图片。这个能理解吧,在我们之前学过一个跟他类似的一个对象。还记得吧,叫什么名字,叫job,那job呢,我们以前呃说他也是个图片那样,但是那样说不是特别的标准啊,或者说不是特别的准确,他叫一个可绘制的对象。这个可绘制对象一定对应一张图片吗?不一定,它可能就对应屏幕上的一个形状,圆或者椭圆啊,或者正方形长方形对吧。
20:01
啊,这个大家得需要去区别开来啊,后面呢,我们会专门去说这个bit map啊,其实慢慢学这个东西啊,先接触一下再深入学也是一种方式啊。啊,这是说的是手机内部文件存储,那下面我们说一下手机外部文件存储,来先说它的位置,这个位置吧,它有两个位置对吧,一个路径一,一个路径二,这个路径一和路径二呢,它是有一定的区别的。啊,我把这个路径呢,给它复制一下。好,我找个人问一下他们的区别,最根本的区别在哪啊,找一个人。那个李欣。
21:03
你新的吗?不在了是吧?杨晓涵是吗?不在了,王建。你说一下这两个路径它存储的特点的区别是吧,首先这个路径一就是默认的是径一的啊,然后。就进来的时候没有了,嗯失嗯,就这种选手没有一万二搞不定啊,退了吧。就很从容的感觉是吧,你发现吗是吧。啊,跟我有的一拼啊,啊在这里面呢,啊,他刚才说了说了,既然能说两个特点,一个是自动生成的确是这一个这个路径一的这个路径不是我去创建的吧。
22:04
担保自动生产的对吧?啊,开始我还没想到他会说这个啊,还是很牛的,这里面最最主要的区别还是在卸载的时候。对吧,它是否自动的去删除。说白了你就记住一点,跟那个报名相关的路径,就是在应用卸载的时候会自动删除。一一旦不跟包名关联,它就不会自动删除,是就是这么简单一个事,对吧?好,下面有一个相关的一些API啊,在这里面呢,涉及到啊几个类,一个是environment。啊,它翻译过来的叫环境,其实它是一个工具类,能够帮助我们操作SD卡啊,能到得到SD卡的状态呀,能得到SD卡的路径呢,啊里面还有状态的标识。
23:05
就是我们挂载状态。在这里面呢,我通过它呢,能够去得到我们的路径一。的对象,嗯。还大家还要关注一个事,就是操作SD卡需要有一个权限,如果你没有这个权限呢,是操作不了的,嗯。好,现在就两种文件存储的方式都跟大家说了一下,现在就要比较。比较内部文件存储与什么呢?外部文件存储。是我如何来选择,说白了就是最终我怎么选择,是内部的还是外部的,对吧?那现在当然有人看看有什么想法没有,我找一个人啊。
24:06
嗯,王建的旁边陈家良。你觉得?或者说我问一个问一个问题啊,你说你说什么样的情况,我可以放到外部文件上。先说一下他们,你觉得他们有什么区别吗?你说呀。他们有什么区别?删除,因为因为写的时候外部不用被不会被删除,内部的话会被删除,嗯,就是外部呢,外部文件存储你可以选择自定义的对吧?对啊,那什么样情况你会用路径二呢。随便情况你用诺基亚。你可以举个例子。
25:02
有例子吗?或者说你举个举一个可能性就是放在路基亚里面就是好,就是特别好,放在路基一或者是或者内部了就是不太好。其实手机里面本来就有这样的例子啊。知道吗?嗯。说话呀,你这是好了啊,想不出来你就说想不出来吧,想不出来坐下吧,没事,我又不打你,其实最最明显的就是那个图,那个什么呢,图库应用。知道我们照相应用吗?对吧,那个照相应用它就是把我们的那个图片存到哪呀,存在SD卡里面有一个叫DC的文件夹,对吧,你在想啊这个事情,那个图片照了很多图片放在那个那个SD卡里面了吧,哎,他为什么不放在手机内部啊。
26:11
因为手机内部的存储空间是相对要小一些,对吧,就手机内部的存储空间,它有一定的存储空间,但是相对来说要小,对吧,而那个外部存储空间相对是不是大一些啊。这是一个吧,好。还有一个最最重要的。就是你在想别的应用是不是也有可能访问,这也是一个大家需要关注的吧。就是需你就需要关注几个点,第一个点就是存储空间的大小,你从几个方面去看对不对,去考虑这个问题,相对来说是不是内部的存储空间要小一些啊,外部的存储空间要大一些。这是一个是,还有一个是,就是是否是私有的。
27:09
这有的数据呢,我是不希望别的应用能看见的,对吧,那有的呢。是希望别的应用可以看得见。可以去读嘛,比如说我整一个数据,还是希望别人应用吗?这就类似于那个分享的功能,对不对?你想啊,我要提供一个路口,我好不容易整了这么多数据,你想想看,我们给他举个例子吧,啊是思想是一样的,但是跟这个没关系,我们联系人应用是不是整了很多联系人数据吧?他希不希望别的应用访问呢?不行啊,联系人的联系人的数据不希望别的应用访问的话,那那那那短信应用那不访问不了了吗。能理解吧,但是访问我联系人的数据肯定是需要一定的权限的,就得说对吧,如果别的应用要读不到我的联系人的数据的话,那那我的联系人只能自己用了。
28:12
啊,思想是一样的,但是嗯,所做的事情不一样的,因为联系的数据它不存在文件里面的,对吧。或者说我的图片啊,我是图库应用保存的是照相应用保存的是不是图库应用也能去查呀,也能去看吧。嗯,对这样一个是啊,还有一个是就是应用卸载自否自动删除单一的想啊,如果是那个照相的,那产生那些图片是放在手机内部的。这个就就有点儿问题了,对吧。那个图库应用一单一三。一旦一卸载的话,大家想或者说照相的也有,一旦被卸载的话,是不是就会导致于我的图片都会被干掉啊。
29:06
人说那个照相机应用是不能能能卸载吗?Root以后就可以对吧,但即使root以后你就把图片给干掉吗。好不容易照一相对吧,高清的都可以看了,对吧,你不能就一下子给他删掉了呀。啊,主要是从这样三个方面去看啊,你就看你的功能需求。啊啊,朝着这三个方面去比较,哪种方式更合适。是放在手机的外部还是放在手机的内部,对吧?是放在路径一还是放在路径二。啊,这个都需要大家去根据这三个方面去比较,比较以后做出一个最终的一个比较合理的一个选择。
30:00
其实文件要存,存哪都可以,对不对,但是根据实际的情况啊,需要去考虑这三个方面。啊。好,这说的是他们啊,这我们的手机外部文件存储。啊,后来呢,我们做了一个小练习啊,那个小练习呢,倒是我来把它整一下吧。啊,练习一我们的练习呢,当时做的特别简单,嗯,难度并不大,我们来看一下,给大家回顾一下啊。就他,嗯。在这里面呢,我们需要去修改那个某一个item的防盗的名称啊,修改它的文本的值。对吧,修改这个文本的值呢,我们,嗯,还是要我们是不是要先要做什么事啊,是不是要去长按加监听,对吧,还是说是去做功的时候,大家一定要先把流程给写好啊,把流程给想好了再去写啊,先要把整个流程写好了以后,我们再一步一步去做。
31:18
啊,最好是能做到这一点。这里面相关的一些,就是主要做了一些SP存储。好,你要想着,我们有这么多存储方式,为什么要SP存储呢?是不是它就是一个小的文本字符串呐,嗯。啊,还有一个就是我们前面学过的技术a lot dialogue啊,还有一个就是great view加basic adapt去显示这样一个列表,就是我们前面都做已经做好的啊,我们就不再一个一个强调了啊,这里其实没有什么太多可写的啊,我就不写了。
我来说两句