涉及到的问题:
1、ListView和RecyclerView的区别,recycleView为什么比listView更出色(LayoutManager)
2、说一下RecyclerView的缓存复用(getViewForPosition()、mCachedViews 、mRecyclerPool)
3、fragment之间的通信(
可以看这个文章https://blog.csdn.net/u012956630/article/details/78257145)
-
RxBus
-
EventBus
-
广播
-
接口回调(这个我回答得不好)
定义一个接口,由activity实现接口方法,fragment在onAttach(Context context)中获取activity的引用并执行接口方法
4、多线程通信
(Handler、view.post()、view.postDelay()、runOnUiThread()、AsyncTask、广播)
5、线程同步
(Synchronized、volatile、Lock、wait()+notify()+notifyAll()+ThreeLocal)
6、怎么终止线程
- while(true)循环里使用if(....)break;退出
- interrupted():处理异常时break;
- stop(不能用)
- run之后会自动终止
7、说一下activity的启动模式
8、ArrayList和LinkedList的区别
9、内存泄漏的场景和解决办法
10、eventBus粘性事件
答错的
1、一个ArrayList里面有20个数字【0-19】,如何把偶数去掉?
一开始的写法是
int length=list.size();
for (int i = 0; i < length;i++) {
if (list.get(i)%2==0) {
list.remove(i);
}
}
错就错在没考虑到remove方法后各元素也应当相应往前移,所以可以这样写
for (int i = 0; i < list.size();) {
if (list.get(i)%2==0) {
list.remove(i);
}else {
i++;
}
}
2、Android webView和JS的相互调用
1、webView调用JS代码:
首先需要setJavaScriptEnabled(true)开启对JS的支持,
然后loadURL()加载HTML文件,
再次调用loadURL()调用HTML的js方法:mWebView.loadUrl("javascript:jsFuncyionName()")
2、js调用webView代码:
首先为webView控件绑定一个JavaScriptInterface类,里面添加带有@JavaScriptInterface注解的方法。
然后在初始化webView的时候通过别名绑定这个JavaScriptInterface:
即webView.addJavaScriptInterface(new JavaScriptInterface(),"别名");
最后在js中通过<a onClick=“window.JavaScriptInterface.functionName()”>点击调用java代码
3、recycleView显示图片时错位