Android面试(三)(转)
来源:互联网 发布:广场舞短袖上衣淘宝网 编辑:程序博客网 时间:2024/05/02 02:14
原链接:http://blog.csdn.net/superjunjin/article/details/7853546
在加强版的基础上又再加强的android应用面试题集
有些补充略显臃肿,只为学习
1.activity的生命周期。
方法
描述
可被杀死
下一个
onCreate()
在activity第一次被创建的时候调用。这里是你做所有初始化设置的地方──创建视图、设置布局、绑定数据至列表等。如果曾经有状态记录(参阅后述Saving Activity State。),则调用此方法时会传入一个包含着此activity以前状态的包对象做为参数。
总继之以onStart()。
否
onStart()
onRestart()
在activity停止后onStop(),在再次启动之前被调用。
总继之以onStart()。
否
onStart()
onStart()
当activity正要变得为用户所见时被调用。
当activity转向前台时继以onResume(),在activity变为隐藏时继以onStop()。
否
onResume()
or
onStop()
onResume()
在activity开始与用户进行交互之前被调用。此时activity位于堆栈顶部,并接受用户输入。
继之以onPause()。
否
onPause()
onPause()
当系统将要启动另一个activity时调用。此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等。这一切动作应该在短时间内完成,因为下一个activity必须等到此方法返回后才会继续。
当activity重新回到前台是继以onResume()。当activity变为用户不可见时继以onStop()。
是
onResume()
or
onStop()
onStop()
当activity不再为用户可见时调用此方法。这可能发生在它被销毁或者另一个activity(可能是现存的或者是新的)回到运行状态并覆盖了它。
如果activity再次回到前台跟用户交互则继以onRestart(),如果关闭activity则继以onDestroy()。
是
onRestart()
or
onDestroy()
onDestroy()
在activity销毁前调用。这是activity接收的最后一个调用。这可能发生在activity结束(调用了它的 finish() 方法)或者因为系统需要空间所以临时的销毁了此acitivity的实例时。你可以用isFinishing() 方法来区分这两种情况。
是
nothing
(补充)
1、onCreate():当Activity被创建的时候调用(第一次)。操作:设置布局文件,初始化视图,绑定数据文件等。
2、onStart():当Activity能被我们看到的时候。
3、onResume():当Activity获得用户的焦点的时候,就是能被用户操作的时候。
4、onPause()[pause暂停的意思]:Activity暂停。应用程序启动了另一个Activity的时候。例子:来了一个电话,系统启动了电话Activity。在这个函数里要做的就是把Activity的数据保存起来,当接完电话的时候,再把这些数据读出来,把原来的Activity还原出来。
5、onstop():当第二个Activity把第一个Activity完全遮挡住了的时候。对话框并没有把原来的Activity完全遮挡起来,不会调用。
6、onDestroy():销毁Activity。1)调用了finish()方法。2)系统资源不够用了。
函数调用过程:
启动第一个Activity的时候:
第一次创建onCreate()–>Activity可见了onStart()–>Activity可以操作了onResume()。
点击第一个Activity上的按钮通过Intent跳到第二个Activity:
第一个Activity暂停onPause()–>创建第二个ActivityonCreate()–>Activity可见onStart()–>Activity可操作onResume()–>第一个Activity被第二个Activity完全遮盖onStop()(如果调用了finish(),或者系统资源紧缺,则会被销毁onDestory())。
点击系统返回功能建,从第二个Activity回到第一个Activity :
第二个Activity暂停onPause()–>第一个Activity重启动OnRestart()(并没有被销毁,如果销毁了则要创建onCreate())–>第一个Activity可见onStart()–>第一个Activity可操作onResume()–>第二个Activity被完全遮盖onStop()(如果调用了finish(),或者系统资源紧缺,则会被销毁onDestory())。
2.横竖屏切换时候activity的生命周期
1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次.
2.设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次.
3.设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.
3.android中的动画有哪几类,它们的特点和区别是什么?
Android提供两种创建简单动画的机制:tweened animation(补间动画) 和 frame-by-frame animation(帧动画).
tweened animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果
frame-by-frame animation:顺序播放事先做好的图像,跟电影类似
这两种动画类型都能在任何View对象中使用,用来提供简单的旋转计时器,activity图标及其他有用的UI元素。Tweened animation被andorid.view.animation包所操作;frame-by-frame animation被android.graphics.drawable.AnimationDrawable类所操作。
想了解更多关于创建tweened和frame-by-frame动画的信息,读一下Dev Guide-Graphics-2D Graphics里面相关部分的讨论。
Animation 是以 XML格式定义的,定义好的XML文件存放在res/anim中。由于Tween Animation与Frame-by-frame Animation的定义、使用都有很大的差异,我们将分开介绍,本篇幅中主要介绍Tween Animation的定义与使用。按照XML文档的结构【父节点,子节点,属性】来介绍Tween Animation,其由4种类型:
Alpha: 渐变透明度动画效果
Scale:渐变尺寸伸缩动画效果
Translate:画面转换位置移动动画效果
Rotate: 画面转换角度移动动画效果
在介绍以上4种 类型前,先介绍Tween Animation共同的节点属性。
表一
属性[类型] 功能
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator
指定一个动画的插入器 有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复的行为 1:重新开始 2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
下面我们开始结 合具体的例子,分别介绍4种类型各自特有的节点元素。
表二
XML节点 功能说明
alpha 渐变透明度动画效果
- android面试(三)
- Android面试(三)(转)
- Android面试(三)(转)
- 面试准备android(三)
- Android面试复习(Android篇三)
- Android面试笔记总结(三)
- Android面试(三)BroadCastReceiver和Service
- 面试(三)
- php面试(三)
- 面试智力题(三)
- 腾讯面试(三)
- C++面试(三)
- 百度面试(三)
- 面试记录(三)
- 面试宝典(三)
- 面试(三)
- 腾讯面试(三)
- Android面试(转)
- windows下配置mysql集群
- 在Linux下基于Eclipse的Hadoop应用开发环境配置
- Linux Shell 基本语法
- 删除oracle表空间,导致oracle启动不了
- 141. Linked List Cycle & 142. Linked List Cycle II
- Android面试(三)(转)
- 沙盒(sandbox) 及 NSFileManager
- C++ cin.getline()函数的使用
- 人脸图像数据库(完整版)
- Linux Shell 编程语法
- Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发
- 程序在别的机器上无法运行的问题
- Android Studio的library项目依赖,Jar包,常用快捷键的对比
- JS or C#?不存在的脚本之争(UnityScript 不是 Javascript)