android面试题之二

六、android 中的动画有哪几种,它们的特点和区别是什么 ?

逐帧动画和补间动画。

逐帧动画:是传统的动画播放方式,指定每一帧的内容和停留时间,然后顺序地播放排列好的图片,类似电影。

补间动画:给出两个关键帧(初和末)和变化时间、方式,通过一些算法对View的内容在规定的时间内完成一系列的图形变换。主要包括四种效果:Alpha、Scale、Translate和Rotate。

所以,补间动画常用来播放一些有规律的动画,而逐帧动画则不一定。

 

七、请介绍下 Android 中常用的五种布局

1.FrameLayout(帧布局)

特点:组件都是从左上角开始放置,后面的会覆盖前面的组件,就像往墙角堆砌东西一样。布局比较简单,只能放一点比较简单的东西。

2.LinearLayout(线性布局)

特点:最常用的布局。分为垂直布局和水平布局。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下排列;水平布局时,只有一行,每一个元素依次向右排列。

3.AbsoluteLayout(绝对布局)

特点:就是用X,Y坐标来指定组件的位置,这种布局适应性太差,很少使用。

4.RelativeLayout(相对布局)

特点:一种非常常用的布局。相对布局是一种以某一个元素为参照物,来确定其他组件位置的布局方式。包括以某一组件为参照物和以父容器为参照物两种情况。

5.TableLayout(表格布局)

特点:类似Html里面的Table。用TableRow来代表表格布局中的每一行,在里面去定义每一行的元素内容和对齐方式。

这几种布局都有自己的特点,在实际应用中,常常相互嵌套,结合使用,才能做出漂亮的界面。

 

八、如何启用Service ,如何停用Service

启动方式有两种:startService(),bindService().它们都是Context的方法。

区别:使用startService()方法启用服务,调用者与服务之间没有关连, 即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止.

停用:采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务

采用bindService()方法启动的服务,调用者和服务绑定在了一起。若调用者退出,系统会调用onUnbind()方法解除绑定,然后调用onDestroy()方法。当然,开发者也可以自己调用Context.unbindService()方法手动解除绑定。接着,系统也会调用服务的onUnbind()-->onDestroy()方法。

 

九、注册广播有几种方式,这些方式有何优缺点?

注册方式有两种:一是在代码中动态注册:registerReceiver(receiverfilter);

                二是在AndroidManifest中配置。

区别
1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。
2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

注:当需要通过广播更新UI时,一般采用动态注册的方式,启动Activity时候注册BroadcastReceiverActivity不可见时候,取消注册。

在AndroidManifest配置还有一个缺点:由于它一直处于活动状态,cpu和电源资源耗费比较大。

 

十、什么是ANR 如何避免它?

ANR:Application Not Responding。

产生原因:在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户的操作在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框,这就是ANR。

解决方式:Activity应该在它的关键生命周期方法里尽可能少的去做创建操作、潜在的耗时操作(网络或数据库操作等),或者高耗时的计算操作(改变位图尺寸等),而应该在子线程里(或者异步方式)来完成。主线程应该为子线程提供一个Handler,以便子线程完成时能够提交给主线程。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值