十一、对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行?

若在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面试题之三的更多相关文章

  1. Android多线程分析之三:Handler,Looper的实现

    Android多线程分析之三:Handler,Looper的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多 ...

  2. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...

  3. 安卓Android面试题大全

    56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...

  4. Android 面试题总结

    Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...

  5. Android面试题整理【转载】

      面试宝典(5)  http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...

  6. 19、android面试题整理(自己给自己充充电吧)

    (转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...

  7. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  8. Android面试题基础(转)

    71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释 ...

  9. Android面试题(文章内容来自他人博客)

    腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...

随机推荐

  1. 文件上传下载样式 --- bootstrap

    在平时工作中,文件上传下载功能属于不可或缺的一部分.bootstrap前端样式框架也使用的比较多,现在根据bootstrap强大的样式模板,自定义一种文件下载的样式. 后续会使用spring MVC框 ...

  2. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...

  3. 浅谈JDBC(二)

    JDBC中的事务 简单来说,事务就是要保证一组DAO方法的操作,要么一起成功要么一起失败. 1.事务控制的位置 在Service中的业务方法内进行事务控制. 2.事务控制的代码 a.注意:JDBC会自 ...

  4. [Jobdu] 题目1511:从尾到头打印链表——单链表的倒置输出

    // ListNode typedef struct LNode { int key; struct LNode *next; }LNode;   分析:这是一道很有意思的面试题,此题以及此题的变体经 ...

  5. BZOJ 1192 鬼谷子的钱袋

    题目如下 Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政.有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会 ...

  6. Laravel5 学习与使用(一)

    2015-07-04 (1)  安装Laravel框架 ① 安装前的准备工作 使用Apache24 + PHP 5.6 + MySQL 开发环境完成PHP网站开发,所以Laravel的安装是建立在以上 ...

  7. WCF服务

    一.新建windows服务       二.新建wcf服务      三.添加安装程序 四.设置安装程序 五.设置启动代码 6 7 8. 注:当使用管理员身份 安装不成功时,可以使用vs自带的命令工具 ...

  8. c 结构体 简单的了解

    1.声明一个学生类的 结构体 struct Student{ int age; char name[20];//长度为20的字符串 int weiht;//像正常一样的申请变量,这个变量属于结构体的一 ...

  9. Windows平台下C++插件系统实现的几个关键技术问题及其解决思路

    根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...

  10. HDOJ 1226 超级密码(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1226 思路分析:题目要求寻找一串长度不大于500的C进制的密码,且该密码需要为十进制数N的整数倍. & ...