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); ...
随机推荐
- sql 分割字符串 存储过程
默认是用 , 分割,如有需要可以自己更改 我写的是 循环插入数据 存储过程,也可以自己改成 方法使用 存储过程: ),@jrid int) as begin declare @location int ...
- 当前项目与当前环境的JDK版本不匹配”Bad version number in .class file“
java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.d ...
- Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/26/2368696.html 一.概述 TextToSpeech,就是将文本内容转换成语音,在其 ...
- 设计模式(十一)代理模式Proxy(结构型)
1.概述 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供 ...
- Structs
1.服务端的运行程序 2.Servlet的三个方法 init service:抽象方法 destroy 3.步骤 (1).在web.xml中 <servlet> <servlet-n ...
- win7系统无线 VirtualBox rehat 32位linux 下 host-only模式相互通信及上网 配置
虚拟机环境:virtualBox虚拟环境 redhat 32位 主机环境 : win7 无线路由 模式: host-only win7下nat模式原先的设置基于 有网线连接的情形下,在使用了无线路由之 ...
- 使用CarrierWave上传图片时,多版本文件名的统一
第一次使用CarrierWavewe做上传,不能不说,虽然Rails已经把上传变得超简单了,而CarrierWave则是把上传变成了一种享受,特别是做图片上传,现在这年代,图片展示平台已经不仅仅是电脑 ...
- CreateFile,ReadFile等API详解(或者说MSDN的翻译)
一.*****CreateFile***** 这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:控制台对象.通信资源对象.目录对象(只能打开).磁盘设备对象.文件对象.邮槽对象.管道 ...
- Qt中QPushButton、QTabWidget等部件内容文字换行的解决方法(一定要写在源码里,写在翻译文件里不行,因为\n得不到转义)
最近在做基于Qt的应用项目,其中有一个按钮文字超长,需要换一行显示.从网上找到的建议都是将要显示的内容做成图片,然后将图片设置为该按钮的背景.但是这样做有一个很大的局限性,当需要更改内容文字的时候,需 ...
- MB_CHANGE_DOCUMENT使用方法
REFRESH IT_MSEG. CLEAR IT_MSEG. SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MSEG ...