Android 2月28日题:
我们可以使用CocurrentHashMap来代替Hashtable吗?
答案:
Hashtable和ConcurrentHashMap有什么分别呢?它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map。
Android 2.27每日一题:ViewPager缓存机制是怎样的?
ViewPager内部维持了一个ArrayList,这个list用于缓存VIewPager需要显示的页面,默认情况下ViewPager会缓存两帧页面,显示一帧页面。缓存是ViewPager的一个最大的特点,缓存是在populate函数中进行的,这个函数全程掌握着adapter来适配显示页面。
Android 2.26每日一题:什么是MeasureSpec?
答:一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它有三种模式:UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;AT_MOST(至多),子元素至多达到指定大小的值。
Android 2.25每日一题:JNI 线程间数据怎么互相访问
答:了解这个问题首先要知道JNI 中全局引用和局部引用的区别:全局引用能在多个线程中被使用,且不会被 GC 回收,只能手动释放。局部引用只在创建它的 native 方法中有效,包括其调用的其它函数中有效。因此我们不能寄望于将一个局部引用直接保存在全局变量中下次使用(请使用全局引用实现该需求)。因此,JNI线程间数据相互访问需要使用全局引用来实现。
Android 2.24每日一题:MVVM架构中databinding的作用是?
参考答案:
Databinding用于在VIEW层与MODEL层之间实现UI与数据的双向邦定功能。