Android面试题(牛客)

来源:互联网 发布:网页编辑器软件 编辑:程序博客网 时间:2024/05/20 11:49
1.Android中许多组件的生命周期都是对称的,这里也不例外。正确的是onCreate()---->onBind() ---->onUnBind() -->onDestory()
2.补充一句:style和theme本质上就是同一个东西,xml格式完全相同,只是我用在activity上我就叫他theme,我用在view上我就叫他style。唯一的区别就是style里头控制的各个属性了,某些属性是只有针对Activity才能生效的(你view有标题栏嘛有状态栏有导航栏吗嘛?但是反过来Activity内部却有一个继承自View的Decorview) 。所以style可以作用在activity上,但是theme却不能反过来作用在view上。
至于C,如一楼C.C.所说的,出题人所说能不能继承指的是Theme这个的不可继承,强调的是类为final所以不能继承。而在XML里头使用parent来指明父Theme这种不属于的继承。 也算是有歧义的题目了,因为不知道“继承”是指类的这种狭义的继承还是后者那种广义的继承
不妨补充一下XML解析方式,遇到parent之后之后就去parent里头解析,然后如此递归,解析完各级的父XML之后,再回到子XML解析。然后后解析的XML元素覆盖前面解析的同名XML元素,就是模拟了类的继承规则啦。
3.我觉得Toast的自定义和可编辑是不同的。一个EditText才是可编辑的吧。
4.“拿来主义”standard模式。哪里需要调用我我就去哪里,可以多次实例化,可以几个相同的Activity重叠。

    “拒绝堆叠”singleTop模式。可以多次实例化,但是不可以多个相同的Activity重叠,当堆栈的顶部为相同的Activity时,会调用onNewIntent函数。

    “独立门户”singleTask模式。同一个应用中调用该Activity时,如果该Activity没有被实例化,会在本应用程序的Task内实例化,如果已经实例化,会将Task中其上的Activity销毁后,调用onNewIntent;其它应用程序调用该Activity时,如果该Activity没有被实例化,会创建新的Task并实例化后入栈,如果已经实例化,会销毁其上的Activity,并调用onNewIntent。一句话,singleTask就是“独立门户”,在自己的Task里,并且启动时不允许其他Activity凌驾于自己之上。

    “孤独寂寞”singleInstance模式。加载该Activity时如果没有实例化,他会创建新的Task后,实例化入栈,如果已经存在,直接调用onNewIntent,该Activity的Task中不允许启动其它的Activity,任何从该Activity启动的其他Activity都将被放到其他task中,先检查是否有本应用的task,没有的话就创建。

5.andrroid的动画类型

    1.帧动画  Frame 一帧一帧的    
    2.补间动画   Tween 慢慢过渡,设置初值和末值,并用插值器来控制过渡
    3.属性动画   ObjectAnimation ValueAnimation  控制属性来实现动画。
属性动画是3.0以后加入的动画。三种动画各有各的好处和缺点
    特点:
       1.帧动画由于是一帧一帧的,所以需要图片多。会增大apk的大小,但是这种动画可以实现一些比较难的效果
比如说等待的环形进度。。多用这个做。
       2.补间动画 可以设置差值器和初末值来控制。相对也比较简单,页面切换的动画多用这个来做。缺点,视觉上
上变化,并不是真正的位置上的变化。
       3.属性动画 最为强大的动画,弥补了补间动画的缺点,实现位置+视觉的变化。并且可以自定义插值器,实现各种
想要的效果。典型案例-----》卫星菜单。
6.

在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:ApplicationNot Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。

默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。超出就会提示应用程序无响应(ANR:ApplicationNot Responding)对话框。

三种常见类型

1: KeyDispatchTimeout(5seconds) -- 主要类型

按键或触摸事件在特定时间内无响应

2  BroadcastTimeout(10seconds)

BroadcastReceiver在特定时间内无法处理完成

3: ServiceTimeout(20seconds) -- 小概率类型

Service在特定的时间内无法处理完成

0 0