当前位置:操作系统 > 安卓/Android >>

Android 面试知识集1

 今晚在复习Android基础的时候,找到了一些很有价值的基础知识,分享给给位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 渐变透明度动画效果
<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />
fromAlpha 属性为动画起始时透明度
 0.0表示完全不透明
1.0表示完全透明
以上值取0.0-1.0之间的float数据类型的数字
toAlpha 属性为动画结束时透明度
表三
 
scale 渐变尺寸伸缩动画效果
<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />
fromXScale[float] fromYScale[float] 为动画起始时,X、Y坐标上的伸缩尺寸 0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
toXScale [float]
toYScale[float] 为动画结束时,X、Y坐标上的伸缩尺寸
pivotX[float]
pivotY[float] 为动画相对于物件的X、Y坐标的开始位置 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
       
表四
 
translate 画面转换位置移动动画效果
<translate
android:fromXDelta=”30″
android:toXDe

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,