android为什么要设计4大组件,他们之间的联系,百度腾讯android面试题.docx

41528d3028836879cd698677c3999917.gif百度腾讯android面试题.docx

腾讯面试题1INTA1INTRESULTA32AA33INTA1234567INTB0X06INTRESULTA4INTEGERA34556INTEGERB34556BOOLEANRESULTAB5STRINGFUNCSTRINGS{RETURNSLENGTH0FUNCSSUBSTRING1SCHARAT0““}STRINGRESULTFUNC“TENCENT“6BYTERESULTBYTEOXFFEFFEFE7INTRESULTOXFE2BAF4PROTECTEDVOIDONSTART5PROTECTEDVOIDONRESUME6PROTECTEDVOIDONPAUSE7PROTECTEDVOIDONSTOP8PROTECTEDVOIDONDESTROY9}你自己写的ACTIVITY会按需要重载这些方法,ONCREATE是免不了的,在一个ACTIVITY正常启动的过程中,他们被调用的顺序是ONCREATEONSTARTONRESUME,在ACTIVITY被干掉的时候顺序是ONPAUSEONSTOPONDESTROY,这样就是一个完整的生命周期,但是有人问了,程序正运行着呢来电话了,这个程序咋办中止了呗,如果中止的时候新出的一个ACTIVITY是全屏的那么ONPAUSEONSTOP,恢复的时候ONSTARTONRESUME,如果打断这个应用程序的是一个THEME为TRANSLUCENT或者DIALOG的ACTIVITY那么只是ONPAUSE,恢复的时候ONRESUME。详细介绍一下这几个方法中系统在做什么以及我们应该做什么ONCREATE在这里创建界面,做一些数据的初始化工作ONSTART到这一步变成用户可见不可交互的ONRESUME变成和用户可交互的,(在ACTIVITY栈系统通过栈的方式管理这些个ACTIVITY的最上面,运行完弹出栈,则回到上一个ACTIVITYONPAUSE到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在ONRESUME里读出来,注意这个方法里做的事情时间要短,因为下一个ACTIVITY不会等到这个方法完成才启动ONSTOP变得不可见,被下一个ACTIVITY覆盖了ONDESTROY这是ACTIVITY被干掉前最后一个被调用方法了,可能是外面类调用FINISH方法或者是系统为了节省空间将它暂时性的干掉,可以用ISFINISHING来判断它,如果你有一个PROGRESSDIALOG在线程中转动,请在ONDESTROY里把他CANCEL掉,不然等线程结束的时候,调用DIALOG的CANCEL方法会抛异常的。ONPAUSE,ONSTOP,ONDESTROY,三种状态下ACTIVITY都有可能被系统干掉为了保证程序的正确性,你要在ONPAUSE里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库)。实际工作中因为生命周期的变化而带来的问题也很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧因为ACTIVITY可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般我都是采用ANDROID的消息机制HANDLER,MESSAGE来处理多线程和界面交互的问题。这个我后面会讲一些,最近因为这些东西头已经很大了,等我理清思绪再跟大家分享。二让ACTIVITY变成一个窗口ACTIVITY属性设定讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很简单你只需要设置一下ACTIVITY的主题就可以了在ANDROIDMANIFESTXML中定义ACTIVITY的地方一句话XML代码ANDROIDTHEME“ANDROIDSTYLE/THEMEDIALOG“ANDROIDTHEME“ANDROIDSTYLE/THEMEDIALOG“这就使你的应用程序变成对话框的形式弹出来了,或者XML代码ANDROIDTHEME“ANDROIDSTYLE/THEMETRANSLUCENT“ANDROIDTHEME“ANDROIDSTYLE/THEMETRANSLUCENT“就变成半透明的,友情提示类似的这种ACTIVITY的属性可以在ANDROIDRSTYLEABLE类的ANDROIDMANIFESTACTIVITY方法中看到,ANDROIDMANIFESTXML中所有元素的属性的介绍都可以参考这个类ANDROIDRSTYLEABLE上面说的是属性名称,具体有什么值是在ANDROIDRSTYLE中可以看到,比如这个“ANDROIDSTYLE/THEMEDIALOG“就对应于ANDROIDRSTYLETHEME_DIALOG,( _ 换成 02030405060708091011121314这里面配置用到了ACTION,DATA,CATEGORY这些东西,那么聪明的你一定想到INTENT里也会有这些东西,然后一匹配不就找到接收者了吗ACTION其实就是一个意图的字符串名称。上面这段INTENTFILTER的配置文件说明了这个ACTIVITY可以接受不同的ACTION,当然相应的程序逻辑也不一样咯,提一下那个MIMETYPE,他是在CONTENTPROVIDER里定义的,你要是自己实现一个CONTENTPROVIDER就知道了,必须指定MIMETYPE才能让数据被别人使用。不知道原理说明白没,总结一句,就是你调用别的界面不是直接NEW那个界面,而是通过扔出一个INTENT,让系统帮你去调用那个界面,这样就多么松藕合啊,而且符合了生命周期被系统管理的原则。想知道CATEGORY都有啥,ANDROID为你预先定制好的ACTION都有啥等等,请亲自访问官方链接INTENTPS想知道怎么调用系统应用程序的同学,可以仔细看一下你的LOGCAT,每次运行一个程序的时候是不是有一些信息比如STARTINGACTIVITYINTENT{ACTIONANDROIDINTENTACTIONMAINCATEGORIES{ANDROIDINTENTCATEGORYLAUNCHER}FLAGS0X10200000COMP{COMANDROIDCAMERA/COMANDROIDCAMERAGALLERYPICKER}}再对照一下INTENT的一些SET方法,就知道怎么调用咯,希望你喜欢)一,LISTVIEW你是怎么优化的。二,VIEW的刷新,之前说过三,IPC及原理四,ANDROID多线程五,ANDROID为什么要设计4大组件,他们之间的联系,不设计行不行(主要是为了实现MVC模式,然而JAVA中最难的模式也是这个,很少有产品能将这个模式做得很好【TECHNICOLOR的面试官问的这个】)六,SERVICE的周期,ACTIVITY的周期,谈下你对ANDROID内部应用的了解,比如他做电话,以及联系人等等应用。框架层有很多东西还是多看看,熟悉ANDROID怎么做的,不管你做应用程开发还是应用框架层开发很有好处的。在就是你项目经验,突出你遇到什么难点,然后是怎么解决的尽量将每个技术点凸显出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值