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

若在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. ICE

    一.Slice-to-C++映射 1.引言 其映射定义:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作.传递参数.处理错误. C++映射完全是线程安全的.例如,类的引用机制针对并行访问机制 ...

  2. 关于css的默认宽度

    <div class="boxa"> <div class="boxb">我是div</div> </div> ...

  3. iOS面试题05-父子控制器、内存管理

    内存管理.父子控制器面试题 1.建立父子关系控制器有什么用 回答:1>监听屏幕选中 2>如果想拿到你当前的很小的一个控制器所在的导航控制器必须要跟外面比较大的控制器建立父子关系,才能一层一 ...

  4. A Byte of Python 笔记(9) 面向对象编程

    第11章  面向对象编程 面向过程:根据操作数据的函数或语句块来设计程序. 面向对象(OOP, object-oriented programming):把数据和功能结合起来,用对象包裹组织程序. 类 ...

  5. Word2007中如何插入参考文献

    很多国内的期刊杂志都只能使用word模板,导致插入参考文献成了件麻烦事,这时特别怀念Latex的便捷.于是找到一篇介绍word2007里插入参考文献的好方法,就是利用尾注的方法使文章的参考文献标号可以 ...

  6. DropBox为什么一直那么红——靠用户体验,旗帜鲜明,它要保存的是你的重要随身资料,并且开放API

    链接:http://www.zhihu.com/question/19705960/answer/71742127来源:知乎 看到这个问题竟然从11年答到现在,有趣的是这几年里国内云存储行业变化也是蛮 ...

  7. HDU 1983 Kaitou Kid - The Phantom Thief (2)

    神题,搜索太差,来自网络的题解与程序 思路: 封锁出口或者入口周围的格子. 最多需要4个封锁点. 所以我们可以采取这样的策略: 1.寻找一条盗贼的可行路线,如果没有,返回0. 2.计算封锁出口和入口四 ...

  8. Spring 面试复习

    1   singleton 和 prototype singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对 ...

  9. apache添加fastcgi支持

    A,安装apache服务器和fastcgi模块支持(ubuntu测试) sudo apt-get install apache2 sudo apt-get install libapache2-mod ...

  10. C++设计模式实现--组合(Composite)模式

    一. 举例 这个样例是书上的,如果有一个公司的组结结构例如以下: 它的结构非常像一棵树,当中人力资源部和財务部是没有子结点的,详细公司才有子结点. 并且最关健的是,它的每一层结构非常相似. 代码实现例 ...