一、android 动画有几种,有什么区别?
答:tween动画是修改传统的移动、放大、缩小以及透明度变化。frame动画是通过顺序播放相关的图片来实现动画。
二、listview缓存机制
答:当listview 有成千上万item时,只有可见的那一页的item是存在内存中,其他不可见的都存在recycler。第一次加载listview中item1时,convertview是空,显示过的都不为空存在recycler中。当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图,省去了inflate和findViewById的时间,性能就得到了优化。
三、handler原理,简单概括。
答:handler通过sandMessage方法,发出一个消息,会把message放到MessageQueue队列中,而这个MessageQueue是属于某一个looper对象的,looper通过其绑定的Thread用looper.loop的方法循环读取队列中的message,并把message放到handler里面去通过disapatchmessage操作!
四、webview调用html和js代码。
答:js中调用java代码其实就记住一点,webview设置一个和js交互的接口(注意这里只是一般的意思,并不是java中接口的含义),这个接口其实是一个一般的类,同时为这个接口取一个别名.mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"demo");android调用js则在loadurl后面直接跟js方法。如下:mWebView.loadUrl("javascript:wave()");
五、两种刷新ui的方法。
答:通过handler,sendmessage来刷新ui .第二种,通过Activity.RunThreadUI(Runnable)方法,当需要更新UI的时候,把Runnable传递到RunThreadUI中实现立即刷新功能。
六、android进程间通信四种方式。
答、第一种通过uri来通信,比如说调起拨打电话等功能。第二种、通过content provider实现多应用,多进程之间的通信。第三种、通过广播来进行通信,broadcastReciver。第四种,AIDL服务。
七、service问题。
答:当service被启动时,onStartCommand方法将被回调。intentService 继承于service 当其被启动时,回调OnHandleIntent().intentService是通过Handler looper message 机制实现了多线程的操作,同时耗时的操作也可以放在其中执行,不会阐释ANR情况。两种启动方法,Onstart启动则不和启动者绑定,当启动者被销毁时,service还存在。Onbind开启时,是和启动者绑定在一起的。当启动者被销毁,则service也被关闭。当start之后再调用onbind,则直接调用onbind方法,若先bind 在onstart 则直接调用onstart方法,注意的是,oncreate方法只会被执行一次。
八、activity和fragment交互
答:第一种、在activity中定义handler,之后在fragment中onAttach()方法得到当前activity,调用setHandler方法。在fragment中定义handler实现交互。第二种,在fragment中定义回调事件,在activity中实现这个回调方法。第三种,通过广播来实现。
九、自定义控件需要重写哪些方法
答:三个构造函数,onMeasure(做计算控件大小),onLayout(设置控件在屏幕的位置),OnDraw(绘制view).
十、fragment懒加载实现
答:setUserVisibleHint方法,判断其如果可见则加载,不可见则不加载。