android面试题之三
十一、对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行?
若在onPause()中进行保存,相应需要在onResume()中进行恢复。
若在onStop()中进行保存,相应需要在onStart()中进行恢复。
另外,还有一个方法onSaveInstanceState(Bundle)。这种情况下,只有当activity是被系统干掉而退出的时候,保存的状态才可以得到恢复,因为下次启动时调用的onCreate(Bundle)方法中的Bundle对象就上次退出时保存状态的Bundle对象。但Activity若不是被系统干掉而是正常退出的,onCreate中的Bundle就是null了。
十二、为什么要用ContentProvider?它和sql的实现上有什么差别?
使用它的原因:是为了实现不同应用程序之间数据的共享。
与sql相同点:它的底层是用SQLite 数据库实现的,所以其对数据做的各种操作都是以sql实现的,只是在上层提供的是Uri。
与sql区别:可以屏蔽数据存储的细节,对用户完全透明,用户只需关心操作数据的Uri就可以了,所以从安全性角度考虑,使用ContentProvider更优。
十三、谈谈 UI 中, Padding 和 Margin 有什么区别?
Padding:用在容器内部,指容器内部内容相对该容器边框的距离。
Margin:用在容器外部,指自己相对其他(上下左右)View的距离。
十四、请介绍下 Android 的数据存储方式。
Android提供了五中数据存储方式:SharedPreferences存储、文件存储、SQLite数据库存储 、ContentProvider存储、网络存储。
1、SharedPreferences存储:用来存储一些简单的配置信息,采用的是键值对的方式进行存储。
2、文件存储:文件存储数据是一种较常用的方式,在Android中常采用openFileInput()和openFileOutput()方法读取/写入文件。常用来存储大数量的数据,缺点是更新数据困难。
3、SQLite数据库存储:SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
以上三种方式存储对应的目录是:/data/data/PackageName/Shared_Pref、/data/data/PackageName/files、/data/data/PackageName/database。
4、ContentProvider存储:Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储,每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。使用ContentProvider的好处在于统一了数据访问方式。
5、网络存储:前面介绍的几种存储都是将数据存储在本地设备上,除此之外,还有一种存储(获取)数据的方式,即通过网络来实现数据的存储和获取。我们可以调用WebService返回的数据或是解析HTTP协议实现网络数据交互。
具体需要熟悉java.net.*,Android.net.*这两个包的内容,可以参阅相关文档。
在实际应用中,常常需要根据设计目标、性能需求、空间需求等来选择合适的数据存储方式.
十五、说说android 中 mvc 的具体体现
mvc是model、view、controller的缩写。
1.视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如果你对android了解得比较多的话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通信,android提供了它们之间非常方便的通信实现。
2.控制层(controller):android的控制层的重任通常落在了众多的activity的肩上,通过事件控制等完成与业务逻辑层之间的交互,而耗时操作都应放在model层,这样做的一个原因是android中的activity的响应时间是5s,如果耗时的操作放在activity里面,程序就很容易被回收掉。
3.模型层(model):对数据库的操作、对网络等的操作以及业务计算操作和一些高耗时的计算操作都应该在model里面处理。
android面试题之三的更多相关文章
- Android多线程分析之三:Handler,Looper的实现
Android多线程分析之三:Handler,Looper的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多 ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
- 安卓Android面试题大全
56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...
- Android 面试题总结
Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...
- Android面试题整理【转载】
面试宝典(5) http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...
- 19、android面试题整理(自己给自己充充电吧)
(转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...
- Android OTA 升级之三:生成recovery.img
Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...
- Android面试题基础(转)
71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释 ...
- Android面试题(文章内容来自他人博客)
腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...
随机推荐
- 虎说:bootstrap源码解读(重置模块)
------<!--action-->------ 开场show:前不生“不犹豫”,后半生“不后悔”.今天又逃课,我不后悔 素材:推特公司的前端框架bootstrap(下称bt),解读源码 ...
- Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览
1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示 ...
- SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。
整个流程 Step 1 放置一个FTP Task 将远程文件复制到本地 建立FTP链接管理器后 Is LocalPatchVariable 设置为Ture 并创建一个变量设置本地路径 Operatio ...
- BZOJ 1927: [Sdoi2010]星际竞速(最小费用最大流)
拆点,费用流... ----------------------------------------------------------------------------- #include< ...
- Oracle的大数据类型,BIG DATA TYPE
1.CLOB 字符LOB类型,主要用于存储大型英文字符 2.NCLOB 国际语言字符LOB类型,主要用于存储大型非英文字符 3.BLOB 二进制LOB类型,主要用于存储二进制数据 4.BFILE 二进 ...
- python自学笔记(十一)关于函数及书写格式
1.函数是抽象的第一步 1.1 有关高压锅 1.2 函数是抽象出来的结构,是总结,是方法 1.3 多用函数 2.如何定义函数 2.1 def是关键词, ...
- Round B APAC Test 2017
https://code.google.com/codejam/contest/5254487 A. Sherlock and Parentheses Problem Sherlock and Wat ...
- struts2 taglib struts标签学习整理中
项目中经常会用到struts标签,这样可以减少代码量. select用法: <s:select list="#request.sysTypes" name="rul ...
- 读书笔记:js设计模式
面向过程编程,面向对象编程和函数式编程> 定义一个类方法1:function Anim(){ } Anim.prototype.start = function(){ .. };Anim.pro ...
- Correlation rule tuning
Lots of organizations are deploying SIEM systems either to do their due diligence or because it’s pa ...