【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了Android 面试题(1) 共7 其00001 - 讲义教程相关资料,希望对各位网友有所帮助!
Android面试题1真他妈的全面呢。
1.请描述下Activity的生命周期。
2.如果后台的Activity由于某原因被系统回收了如何在被系统回收之前保存当前状态3.如何将一个Activity设置成窗口的样式。
EditedbySodino4.如何退出Activity如何安全退出已调用多个Activity的Application5.请介绍下
Android中常用的五种布局。
6.请介绍下
Android的数据存储方式。
EditedbySodino7.请介绍下ContentProvider是如何实现数据共享的。
EditedbySodino8.如何启用Service如何停用Service。
EditedbySodino9.注册广播有几种方式这些方式有何优缺点请谈谈
Android引入广播机制的用意。
10.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。
11.AIDL的全称是什么如何工作能处理哪些类型的数据12.请解释下
Android程序运行时权限与文件系统权限的区别。
EditedbySodino13.系统上安装了多种浏览器能否指定某浏览器访问指定页面请说明原由。
14.有一个一维整型数组intdata保存的是一张宽为width高为height的图片像素值信息。
请写一个算法将该图片所有的白色不透明0xffffffff像素点的透明度调整为50。
15.你如何评价
Android系统优缺点。
1.请描述下Activity的生命周期http://weizhulin.blog.51cto.com/1556324/311495详细介绍一下这几个方法中系统在做什么以及我们应该做什么onCreate:在这里创建界面做一些数据的初始化工作onStart:到这一步变成用户可见不可交互的onResume:变成和用户可交互的在activity栈系统通过栈的方式管理这些个Activity的最上面运行完弹出栈则回到上一个ActivityonPause:到这一步是可见但不可交互的系统会停止动画等消耗CPU的事情从上文的描述已经知道应该在这里保存你的一些数据因为这个时候你的程序的优先级降低有可能被系统收回。
在这里保存的数据应该在onResume里读出来注意这个方法里做的事情时间要短因为下一个activity不会等到这个方法完成才启动onstop:变得不可见被下一个activity覆盖了onDestroy:这是activity被干掉前最后一个被调用方法了可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉可以用isFinishing来判断它如果你有一个ProgressDialog在线程中转动请在onDestroy里把他cancel掉不然等线程结束的时候调用Dialog的cancel方法会抛异常的。
onPauseonstoponDestroy三种状态下activity都有可能被系统干掉为了保证程序的正确性你要在onPause里写上持久层操作的代码将用户编辑的内容都保存到存储介质上一般都是数据库。
实际工作中因为生命周期的变化而带来的问题也很多比如你的应用程序起了新的线程在跑这时候中断了你还要去维护那个线程是暂停还是杀掉还是数据回滚是吧因为Activity可能被杀掉所以线程中使用的变量和一些界面元素就千万要注意了一般我都是采用
Android的消息机制HandlerMessage来处理多线程和界面交互的问题。
这个我后面会讲一些最近因为这些东西头已经很大了等我理清思绪再跟大家分享。
2.如果后台的Activity由于某原因被系统回收了如何在被系统回收之前保存当前状态当你的程序中某一个ActivityA在运行时中主动或被动地运行另一个新的ActivityB这个时候A会执行Java代码1.public2.voidonSaveInstanceStateBundleoutState3.super.onSaveInstanceStateoutState4.outState.putLongid12345678905.6.7.publicvoidonSaveInstanceStateBundleoutStatesuper.onSaveInstanceStateoutStateoutState.putLongid12345678908.B完成以后又会来找A这个时候就有两种情况一种是A被回收一种是没有被回收被回收的A就要重新调用onCreate方法不同于直接启动的是这回onCreate里是带上参数savedInstanceState没被收回的就还是onResume就好了。
savedInstanceState是一个Bundle对象你基本上可以把他理解为系统帮你维护的一个Map对象。
在onCreate里你可能会用到它如果正常启动onCreate就不会有它所以用的时候要判断一下是否为空。
Java代码ifsavedInstanceStatenulllongidsavedInstanceState.getLongidifsavedInstanceStatenulllongidsavedInstanceState.getLongid就像官方的Notepad教程里的情况你正在编辑某一个note突然被中断那么就把这个note的id记住再起来的时候就可以根据这个id去把那个note取出来程序就完整一些。
这也是看你的应用需不需要保存什么比如你的界面就是读取一个列表那就不需要特殊记住什么哦没准你需要记住滚动条的位置...3.如何将一个Activity设置成窗口的样式简单你只需要设置一下Activity的主题就可以了在AndroidManifest.xml中定义Activity的地方一句话Xml代码1.
android:themeandroid:style/Theme.Dialog2.3.
android:themeandroid:style/Theme.Dialog4.
上一篇:
android系统所有发行版本
下一篇:
7*30m公路预应力混凝土连续梁桥上部结构设计