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 渐变透明度动画效果

0 0