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()
当你的程序中某一个ActivityA在运行时,主动或被动地运行另一个新的ActivityB,这个时候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
5.请介绍下Android中常用的五种布局。
FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)
6.请介绍下Android的数据存储方式。
一.SharedPreferences方式
二.文件存储方式
三.SQLite数据库方式
四.内容提供器(Contentprovider)方式
五.网络存储方式
7.请介绍下ContentProvider是如何实现数据共享的。
创建一个属于你自己的Contentprovider或者将你的数据添加到一个已经存在的Contentprovider中,前提是有相同数据类型并且有写入Contentprovider的权限。
8.如何启用Service,如何停用Service。
9.注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。
10.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。
11.AIDL的全称是什么?如何工作?能处理哪些类型的数据?
12.请解释下Android程序运行时权限与文件系统权限的区别。
13.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
14.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
15.你如何评价Android系统?优缺点。