首页 Android面试题(四)数据保存和网络

Android面试题(四)数据保存和网络

举报
开通vip

Android面试题(四)数据保存和网络1.常用的数据持久化(长久保存数据)方式有哪些?答:1、SharedPreference,共享参数形式,一种以Key-Value的键值对形式保存数据的方式,Android内置的,一般应用的配置信息,推荐使用此种方式保存,不能存文件也不适合。其存储的位置在/data/data/packageName/shared_prefs文件夹下面。2、InternalStorage:把数据存储到手机内部的存储空间,主要用来保存私有数据/data/data/packageName/files文件夹下面3、ExternalStora...

Android面试题(四)数据保存和网络
1.常用的数据持久化(长久保存数据)方式有哪些?答:1、SharedPreference,共享参数形式,一种以Key-Value的键值对形式保存数据的方式,Android内置的,一般应用的配置信息,推荐使用此种方式保存,不能存文件也不适合。其存储的位置在/data/data/packageName/shared_prefs文件夹下面。2、InternalStorage:把数据存储到手机内部的存储空间,主要用来保存私有数据/data/data/packageName/files文件夹下面3、ExternalStorage:把数据存储到手机的外部存储SD卡中,主要用来保存非私有和大型数据,它有应用程序专用的文件夹,也有所有程序公用的文件夹(这个文件夹不会随着应用程序的卸载而卸载),需要赋予应用程序访问Sdcard的权限,Android的权限控制尤为重点,在Android程序中,如果需要做一些越界的操作,均需要对其进行授权才可以访问。在AndroidManifest.xml中添加代码:  4、SQLiteDatabases:以表格形式存储信息的一个轻量级的小型数据库5、NetworkConnection:将数据存储到网络服务器上6、ContentProvider:他提供一种方式实现两个不同应用程序之间的通讯2.ShareedPrefrence的读写数据的基本 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ?答:它保存的数据主要是简单类型的Key-value对。并且Value部分只能是一些基本数据类型:boolean、float、int、long、String等。1、得到SharedPreference对象的方法有:a、Context类中的getSharedPreference(Stringname,intmode)方法,name:存储的文件名,如果不存在会自动创建一个mode:访问模式,一般有两个参数MODE_PRIVTE(私有,只有当前应用程序才能进行读写)和MODE_MULTI_PROCESS(多个进程对同一个文件进行读写)b、Activity类中的getSharedPreference(intmode)方法,自动将当前活动的类名作为文件名c、PreferenceManager类的getDefaultSharedPreferences(Contextcontext)方法,这是一个静态方法,接收Context参数,会自动将应用程序的包名作为前缀去命名文件2、读常用方法:a、booleancontains(StringKey):判断SharedPreferences是否包含特定Key的数据b、abstractMapgetAll():获取SharedPreferences数据里全部的Key-Value对。c、booleangetXxx(Stringkey,XxxdefValue):获取SharedPreferences数据里指定Key对应的value。如果该Key不存在,返回默认值defValue。3、写常用方法(通过SharedPreferences的内部接口Editor实现,edit()方法即可得到Editor对象)a、abstractSharedPreferences.Editorclear():清空SharedPreferences里所有的数据b、abstractSharedPreferences.EditorputXxx(Stringkey,xxxvalue):向SharedPreferences中插入指定的Key-Value对。c、abstractSharedPreferences.Editorremove(Stringkey):从SharedPreferences中移除指定Key的数据。d、booleancommit():当Editor编辑完成后,调用该方法提交修改,切记不可忘记调用此方法,否则不能储存数据3.SQLite的基本语句:建表、增删改查分别是怎么样的?答:建表:CREATETABLEtableName(column1INTEGERPRIMARYKEYAUTOINCREMENT,column2VARCHAR(num),.....);添加:INSERTINTOtableNamevalues(value1,value2);添加所有字段INSERTINTOtableName(column1,column2)values(value1,value2);添加字段column1和字段column2删除:DELETETABLEtableName删除全部DELETETABLEtableNameWHEREcolumn2=vaule2按条件查询(字段column2的值为vaule2的这一行,如果value2为字符串则需要用单引号括起来)更新:UPDATEtableNameSETcolumn1=value1,column2=value2,...;所有数据都这样更新UPDATEtableNameSETcolumn1=value1,column2=value2WHEREcolumn3=value3;更新column3=value3这一行的column1和column2的值查询:SELECT*FROMtableName;查询所有的数据SELECTcolumn1,column3FROMtableName;查询所有数据,但是只显示column1,column3这两个字段的所有值SELECT*FROMtableNameWHEREcolumn2>someValue;查询column2字段的值大于someValue的所有字段SELECT*FROMtableNameWHEREcolumn1=value1ORDERBYcolumn2ASC;按条件查询结果以column2的升序排列SELECT*FROMtableNameWHEREcolumn1=value1ORDERBYcolumn2DESC;按条件查询结果以column2的降序排列SELECT*FROMtableNameWHEREcolumn2LIKE'%key%'ORDERBYcolumn2ASC;//模糊查找4.SQLiteOpenHelper的作用是什么?答:SQLiteOpenHelper主要是用来创建数据库和表格,以及为数据库升级的作用。在Android系统中,既然可以通过Context类的openOrCreateDatabase() 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 打开或创建SQLite数据库,并且可以通过其返回值(即SQLiteDatabase对像)调用execSQL()函数对数据库做任何的操作(CRUD),那么还需要SQLiteOpenHelper这个类有什么意义呢?例如:db=openOrCreateDatabase(DB_NAME,this.MODE_PRIVATE,null);db.execSQL("DROPTABLEIFEXISTSstudents");db.execSQL("CREATETABLEIFNOTEXISTSstudents(_idINTEGERPRIMARYKEYAUTOINCREMENT,name,ageINTEGER)");实际上,直接操作数据库的语句和其他的语句混在一起,不利于程序的模块化。而SQLiteOpenHelper是一个抽象类,通过它的名字可以看出来,是一个帮我们打开数据库的小助手:1、当newSQLiteOpenHelper子类对象时,就会通过其构造函数创建数据库文件(当然如果数据库如果存在,就不用创建了,并且自动调用onCreate(SQLiteDatabasedb)创建数据表;2、当要对数据库读操作时,只需调用其子类的getReadableDatabase()返回SQLiteDatabase实例,通过该实例来执行SQL语句;3、当要对数据库写操作时,只需调用其子类的getWritableDatabase()返回SQLiteDatabase实例,通过该实例来执行SQL语句;4、当通过构造函数传进来的数据库版本高于之前的版本时,系统会调用onUpgrade()函数来更新数据库。于是,对APP而言,就屏蔽了数据库创建的过程,将数据表的创建独立出来了。SQLiteOpenHelper只是一个数据库管理的帮助类,让使用者不直接操作数据库而是通过操作这个类的对象来实现各种数据库操作。这个类就是给数据库操作搭了个架子,使用者根据需求去填充那些架子。5.什么是回调CallBack,回调的作用是什么?常见的回调使用场景?答:定义:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。有点多态的意思在里面,不知道具体的实现,所以只定义一个 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 (接口),实现的时候自己实现该方法。定义在接口里,调用在一个地方(什么时候调用)(),具体实现又在另一个地方(触发调用的时机(具体实现))回调机制:我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。(当想到答案后,调用回调方法,该方法的参数就是问题的答案,问问题就是将要问的问题和接口对象(即将想到的答案)作为参数注册到你的一个方法里那里(该方法里就是接受注册this.mcallback==mcallback,并将具体的问题在这方法中展现(其它参数拼接)),但是该方法在什么时候调用呢?当你遇到问题的时候调用该方法,接口方法的参数就是你想要的答案即该接口方法将答案告诉了你,而接口方法的实现就是你收到答案后要做的事)。函数的参数其实就是指针,就是引用,指向你调用方法时传进来的参数值,建立方法的时候是形式参数,而调用函数时的就是实参作用:1、可以节省时间,不用长久的等待,充分利用了资源2、把接口方法的定义和调用给封装起来,让工具类的使用变得简单易用。用户不需要关心接口方法的定义以及调用,只需要关注方法的具体实现功能即可。使用场景:1、事件监听器,这其实就是回调最常见的应用场景之一2、生命周期函数3、当方法的具体实现不确定的时候可以设置回调函数让清楚的人自己去实现,而我们只是提供一个实现的接口出去,而其它的别人不需要知道的东西都封存起来,这也体现了封装和面向对象的思想,你问我问题,而我想到了答案告诉你,至于你拿到答案后干什么,我怎么想到的答案都不需要对方知道6.TCP和UDP的区别是什么?答:TCP:传输控制 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。a、面向连接,靠三次握手来完成b、速度相对较慢,因为连接的过程会耗时间和资源c、可靠的协议,数据不会丢失d、数据大小没有限制e、耗用系统资源相对较多UDP:用户数据报文协议a、面向无连接的b、高效的、速度快c、不可靠的协议,容易丢失数据d、数据包大小有限制,小于64Ke、耗用系统资源相对较少7.Http的get和post方法的区别什么?答:get方法:原理上:主要用来获取或者查询资源信息,是安全的和幂等的。就是说不修改信息表面上:a、GET请求的数据会附在URL之后(就是把数据放在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连b、GET方式提交的数据较小(浏览器和操作系统对URL长度的限定),一般1024字节c、GET的安全性相对较弱,可能会造成信息泄露(信息会明文出现在URL上,其他人可能会通过浏览器的缓存查看到历史 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 ,从而得到信息)d、服务器端用Request.QueryString获取变量的值e、GET请求用起来比比较方便post方法:原理上:根据Http规范,POST表示可能修改服务器上资源的请求表面上:a、POST请求把要提交的数据放在HTTP包的包体中。b、POST可以提交较大量的数据(受到服务器的处理程序的处理能力限制)c、POST安全性较高(数据不会明文出现在URL上)。d、服务器端用Request.Form获取提交的数据。e、用起来相对麻烦一点8.HttpURLConnection和HttpClient有什么区别?他们的基本使用流程是怎么样的?答:区别:HttpURLConnection:a、是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。功能不够丰富和灵活HttpClient:a、HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,用起来高效、最新、功能丰富基本使用流程:HttpURLConnection:a.开启一个子线程b.创建URL对象uc.通过u的openConnection获取链接conn,相关设置,请求方式、超时链接等d.通过conn的getXXXStream方法获取IO流e.通过IO流进行读写操作f.得到的结果更新UI上h.关闭资源HttpClient:a.开启一个子线程b.得到一个网络资源路径(String)c.创建HttpClient对象clientd.创建一个请求方式的对象HttpPost、HttpGete.通过client的excute(get)方法获取HttpResponse对象responsef.通过response的方法获取响应结果g.如果是状态码为200则通过response的getEntity方法获取HttpEntity对象entityh.得到entity对象就包含了服务器返回的所有数据i.如果需要操作IO流,可以通过response的getContent方法来获取IO流,如果不需要,可以通过EntityUtils的toString(entity)方法将其转化成字符串j.断开连接disConnected方法
本文档为【Android面试题(四)数据保存和网络】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥14.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
烟雨
暂无简介~
格式:txt
大小:9KB
软件:记事本
页数:0
分类:
上传时间:2019-05-30
浏览量:0