[转载]android一些、面试题
1. 请描述下Activity的生命周期。
必调用的三个方法:onCreate() --> onStart() --> onResume(),用AAA表示
(1)父Activity启动子Activity,子Actvity退出,父Activity调用顺序如下
AAA --> onFreeze() --> onPause() --> onStop() --> onRestart() --> onStart(),onResume() …
(2)用户点击Home,Actvity调用顺序如下
AAA --> onFreeze() --> onPause() --> onStop() -- Maybe --> onDestroy() – Maybe
(3)调用finish(), Activity调用顺序如下
AAA --> onPause() --> onStop() --> onDestroy()
(4)在Activity上显示dialog, Activity调用顺序如下
AAA
(5)在父Activity上显示透明的或非全屏的activity,Activity调用顺序如下
AAA --> onFreeze() --> onPause()
(6)设备进入睡眠状态,Activity调用顺序如下
AAA --> onFreeze() --> onPause()
2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
onSaveInstanceState()
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
3. 如何将一个Activity设置成窗口的样式。
在AndroidManifest.xml 中定义Activity的地方一句话android:theme="@android:style/Theme.Dialog"或android:theme="@android:style/Theme.Translucent"就变成半透明的
4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
对于单一Activity的应用来说,退出很简单,直接finish()即可。
当然,也可以用killProcess()和System.exit()这样的方法。
http://blog.csdn.net/debug2/archive/2011/02/18/6193644.aspx
1、抛异常强制退出:
该方法通过抛异常,使程序Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。
但是这样做同样不完美。
你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。
但至少,我们的目的达到了,而且没有影响用户使用。
为了编程方便,最好定义一个Activity基类,处理这些共通问题。
5. 请介绍下Android中常用的五种布局。
FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)
6. 请介绍下Android的数据存储方式。
Android提供了4种方式存储数据:
--使用SharedPreferences存储数据;------------------解析的XML文件用来存储。
--文件存储数据;----------------------输入输出流
--SQLite数据库存储数据;
--使用ContentProvider存储数据;--------------可以存储在SQLite里面,也可以存储在内容解析器(Android自带的一个解析类)里面。
7. 请介绍下ContentProvider是如何实现数据共享的。
创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。
8. 如何启用Service,如何停用Service。
服务类继承自service清单文件中注册 enabled属性设为true
开始一个服务使用startservice方法,停止一个服务使用stopservice方法
9. 注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。
引入广播机制可以方便几大组件的信息和数据交互。
b:程序间互通消息(例如在自己的应用程序内监听系统来电)
c:效率上(参考UDP的广播协议在局域网的方便性)
d:设计模式上(反转控制的一种应用,类似监听者模式)
10. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。
android提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
11. AIDL的全称是什么?如何工作?能处理哪些类型的数据?
Android Interface Define Language见aidl的笔记
12. 请解释下Android程序运行时权限与文件系统权限的区别。
13. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
14.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
16.Intentservice的 好处Activity的进程,当处理intent的时候,会产生一个对应的Service
每当一个程序第一次启动时候都会启动一个main thread 该线程主要处理与UI相关的事件,比如按键事件。
子线程和ui的更新通过 handler处理msg消息队列使用sendmessage方法或者post方法post方法发送的是一个runnable对象。
Looper是每条线程里的message queue的管家。因为子线程里没有mq所以调用looper里的getMainlooper方法这样得到的主线程的looper不为null。
Looper。Loop方法运行开始后,循环的按照接受顺序取出非空的mq
当sendmessage方法执行时 该函数设置了那个msg对象的target属性是当前的hander对象
随后looper取出了那个msg则调用该msg的target只想的handler的dispatchMessage方法
1) meg里面的callback方法实现了一个runnable接口run函数做处理工作
2) handler里面的mcallback指向的一个实现了callback接口的对象由handlemessage处理
3) 处理消息handler对象对应的类继承并且实现了其中handlemessage函数通过这个实现的handleMessage函数处理消息
最后handler处理完message对象之后looper设置该msg对象为null以便回收
判断handler对象里面的looper对象属于哪条线程的则由该线程执行
1) 当handler对象的构造函数为空时,说明looper是主线程的
UTF8它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码
GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示
19. 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?
解答:可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。
4、简要解释一下activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver
一个service不包含可见的用户界面,可以在后台无限运行。可以连接到一个正在运行的服务中,连接后可以通过服务中的接口对其通信
一个broadcast receiver 是一个接收广播消息并做出回应的组件。广播接收者没有界面
转载于:https://www.cnblogs.com/liuzhuqing/archive/2012/07/03/7480801.html
[转载]android一些、面试题相关推荐
- Android 简历+面试题 汇总
1.教你写简历 1.1.你真的会写简历吗? 1.2.80%以上简历都是不合格的 1.3.推荐两个技术简历模板 1.4.关于程序员求职简历 1.5.程序员简历模板列表 2.面试题 2.1.国内一线互联网 ...
- 下列哪个可做 Android 数据存储,Android应用开发试题
Android应用开发试题 一.选择题(每题2分,共30分) 1. 下列不是手机操作系统的是?()D A. Android B. Window Mobile C. Apple IPhone IOS D ...
- Android/Java面试题,边面试边成长,为了应试而应试
Android/Java面试题,边面试边成长,为了应试而应试 从今天起,所有面试或遇到过的面试题,都整理到此文章下,提醒自己时刻要学习,同时分享给各位.[部分网上整理] Java基础 1,Java中一 ...
- android开发面试题!微信小程序趋势及前景,社招面试心得
没有稳定的工作,只有稳定的能力. 又到了万物复苏的季节,在程序猿这个行当里,作为 Android 开发出生的,在经历了八年的脱发生涯后,有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起,在 R ...
- 超级准确的Android/JAVA面试题合集,背会你就10k!
原文转自:点击打开链接 欢迎访问 我的个人博客 Android常见的问题 常见算法问题的 Java 实现 资料可见 算法介绍可见 算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛. ...
- android java 面试题及答案_android面试题及答案
引导语:android是这段时间非常热门的开发专业之一,而有关android的面试题及答案哪里有呢?接下来是小编为你带来收集整理的文章,欢迎阅读! 在android中,请简述jni的调用过程. 1安装 ...
- 秋招Android常见笔试题合集--Binrry(冰蕊)
阅文集团笔试题 单选题 数组初始化 给定如下代码:int x[4]={0};int y[4]={1};数组x和y的值为: {0,0,0,0},{1,0,0,0} 十进制30转换成十六进制数是: 1E ...
- Android 中高级面试题:Activity是如何实现LifecycleOwner的?
} 3.低版本Activity兼容Lifecycle SupportActivity是伴随Lifecycle才出现的,android.arch.lifecycle:extensions为早期还没有继承 ...
- Android 2017面试题整理
似乎自去年下半年以来,大家跳槽的少了,还有有些公司裁员了,前几年火热的移动端.前端岗位也越来越少,回归理性.现在各大公司对移动Android/ios的需求基本要求都是三年以上相关经验,有过大型互联网项 ...
- [转载]android 画虚线、实线,画圆角矩形,一半圆角
[转载]android 画虚线.实线,画圆角矩形,一半圆角 (2013-03-19 12:38:12) 转载▼ 标签: 转载 分类: android 原文地址:android 画虚线.实线,画圆角矩形 ...
最新文章
- ACMMM2017 | 电子科大斩获最佳论文!中科院自动化所多媒体计算组获得IEEE期刊最佳论文!
- Efficiency / Relative Efficiency and the Efficient Estimator
- cvCreateMat函数
- Exchange Server 2013之CAS服务器NLB负载均衡
- 对齐内容验证码和图片
- java中包命名常见规则
- excel npoi 连接_Net操作Excel_NPOI(示例代码)
- 百度蜘蛛网站分两个服务器,SEOer需要将百度蜘蛛抓取时间降低到1秒以下
- c++开发软件_Windows下学习C语言有哪些集成开发软件?
- pdfjs 字体新增_JSPDF支持中文(思源黑体)采坑之旅,JSPDF中文字体乱码解决方案...
- css全局加粗,CSS 实现矩形四个边角加粗的方法
- 多个数求最小公倍数详解!
- 动态规划Dynamic programming笔记自用
- 【原创】samba移植到android流程
- iOS 的用户认证:使用Swift和Ruby on Rail
- javascript教程系列-1.JavaScript基础
- 计算机图形学中的光栅化
- Unity3D占用内存详细解答
- PL/SQL 入门学习(一)
- 求2个数的最小公倍数
热门文章
- python中异或运算_python – 基于ID列表有效计算XOR(^)校验和的方法
- request payload怎么发_做了一个个人博客,但不知道怎么介绍
- 电力笔记-30个行业专业词汇(Ⅰ期)
- Qt工作笔记-QGraphics重设场景坐标【标签:Qt图形框架】
- WEB安全基础-SQL注入演示
- WEB安全基础-WEB服务器相关知识
- C/C++ OpenCV之Sobel边缘检测
- dataframe 众数的方法_pandas 第11篇:DataFrame-数据处理(分组、聚合、窗口、相关、统计)...
- js 字符串插入_Vue.js 条件与循环
- 判断数组中某个元素除自身外是否和其他数据不同_18 张图带你彻底认识这些数据结构...