面试总结一(1)

续写面试总结一
第三、android部分
只是简单的记录相关的知识点,不会深入解析;
android部分大致上也可以分为两类,一类是对于android的理解和运行机制的了解,另一类是android的应用实践,但是真正出题的时候两部分一般是在一起的;

A.android的生命周期:
   android的生命周期有 oncreat,onStart,onResume,onPause,onStop,onDistroy;
   生命周期的运用,当activity发生显示、隐藏、横竖屏切换的时候生命周期的变化;
   1.在activityA中开启activityB:A会首先执行onPause,B会执行onCreat,onStart,onResume,A执行onStop;这时在B中执行finish或按返回键,B执行onPause,A执行onRestart,onStart,onResume,B执行onStop,onDestroy;
   2.横竖屏切换一般是会重新执行生命周期的,但这个时候要注意AndroidManifest.xml中的configChanges属性,捕获手机状态改变的属性;
      一般情况,切换到横屏会执行一遍生命周期,切换到竖屏会执行两次;
      configChanges属性值为 orientation时,切换横屏和竖屏都是执行一次;属性值为 orientation|keyboardHidden|ScreenSize时不会重新执行生命周期会调用 onConfigurationChanged方法
 B.android四大组件
    四大组件包含,Activity,Service,ContentProvider,BroadcastReceiver;
    这个如果拓展的话会有点多,这里只说一下它们各自针对的情况,和如何启动;
    Activity,作为一个活动它的目的时承载各种view显示数据,同时利用生命周期来规范这些显示。
                   启动方式,startActivity和startActivityForResult;
    Service,有自己的生命周期,没有界面,适合监控和耗时操作的执行;
                  启动方式有两种,startService,binservice;前者和启动对象无关联,后者有关联;
   BroadcastReceiver,类似于一个监听器,而且广播时可以跨软件的,没有界面,通过广播可以知道手机的发生的状态改变,从而做出反应,也可以作为通知在软件内部使用;
                  启动,需要注册,注册有代码动态注册有manifest静态注册,动态注册会和程序一起结束,注意一点在onReceive中不要做耗时操作;
   ContentProvider,内容提供者,是一种数据存储或获取的方式,它的存储可以是文件的也可以是数据库的(SQLite),他的存贮有一种共享的性质,例如手机的相册,也就是说不同的程序之间是可以用它共享数据的。
                  启动,需要注册,使用方式和数据库的有些类似;
C.UI主线程和其它线程:
    1.UI主线程就是Activity的线程是按照生命周期在走,所以主线程有一个问题,耗时操作问题;
    2.其它线程主要的目的就是为了解决UI线程的耗时操作;
    3.其它线程种类:最简单的就是new一个Thread,其它的例如timer;这会涉及到多线程管理和非UI线程改变View或主线程内的数据的问题;为了解决这个问题,
       于是handler 和 interface就登场了,主要的还是handler,说到handler就要联系到MessageQueue,looper,它们之间的关系简单说就是,在MessageQueue中存储message,然后looper不断地去循环检查,发现有需要的了就用handler传递给需要的对象;
D.android动画,    
E.第三方包
F.自定义控件
    onMeasure,onLayout,onDraw;
G.android内存溢出浅谈
    内存溢出粗暴的说就是有长期被引用却没有使用的对象占有内存,避免的方法,不用长生命周期调用短生命周期,如果调用了注意销毁,减少static关键字的使用,减少匿名内部类和非静态内部类的使用,注意集合中的对象的消除,使用软引用和弱引用;推荐https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/Android%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E6%80%BB%E7%BB%93.md
讲的很细;
H.android混合开发:
    一般面试时会问android webview和h5js的相互调用,h5调用webview:在h5中定义founction在webview中实现;webview调用h5利用webview.loaduri("javascript:h5中的方法明")




















                  
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值