摘要:
dp 一种基于屏幕密度抽象长度单位。在每英寸160点的显示器上,1dp = 1px。为什么要选160这个数字呢,因为第一款安卓设备的DPI是160。 假如在不同设备上都设置了240dp的控件宽度,显示效果是一样的。 sp 与dp类似,但是会根据系统字体的大小调整 px 像素单位,假如在不同分辨率的设 阅读全文
摘要:
View.post() 在View绘制成功后执行 firstIv.post(new Runnable() { @Override public void run() { Log.i(TAG, "高度" + firstIv.getHeight() + ",宽度" + firstIv.getHeight 阅读全文
摘要:
这是字节面试官问的一个问题,平时Glide用惯了,让我说大图加载原理答不上来。 大图如果直接加载到内存,往往会导致OOM,因为大图所占内存非常大。 Bitmap直接加载 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mi 阅读全文
摘要:
这个问题是字节跳动面试官问的,当时没看过图片异步加载框架的原理,只能跟他说会用。今天仔细看了看原理感觉也没那么难。 Gilde的使用方法也很简单: Glide.with(content) .load(url) .into(imageView); with绑定生命周期,load指定加载资源,into指 阅读全文
摘要:
主要思路是生产者消费者。当A线程打印到第5个时,让B线程的信号量加1;B线程开始执行并结束,结束前让A线程的信号量加1,A线程继续add import java.util.LinkedList; import java.util.List; import java.util.concurrent.S 阅读全文
摘要:
多线程编程中耗时线程是很常见的情况,有时候我们不得不在一个线程中去终止另一个耗时线程。JDK并不推荐直接停止比如this.stop(),这会导致一些异常,比如锁未释放程序一直死锁。JDK推荐使用一个线程去通知耗时线程该结束线程了,耗时线程做退出前的回收处理然后自己结束线程。 自定义标志位终止 使用v 阅读全文
摘要:
强引用 在Java中使用如下方式声明的引用是强引用 String str = new String("abc"); str 是堆中对象new String("abc")的强引用,被强引用的对象在任何时候gc不会被回收,即使内存不足汇报OOM。 软引用 在Java中使用如下方式声明的引用是软引用 So 阅读全文
摘要:
Android生命周期起始在Application这个实例。 简单使用 默认是没有的,需要自己手动写一个继承Application。 public class LearnApplication extends Application { private static final String TAG 阅读全文
摘要:
基于流行度 这种算法比较简单,按所有用户的点击量排序呈现给用户,按热度数据推荐给每个用户。弊端就是每个用户看到的都是一样的,无法个性化推荐,微博排行榜就是个比较好的例子。 协同过滤算法 基于用户 分析各个用户对物品的评价(浏览次数,停留时间,购买次数) 依据用户对物品的评价计算得出所有用户之间的相似 阅读全文
摘要:
问题来源 这是字节面试官问的,当时答的不是很好,准备不充分,只能讲了下Android的事件分发机制。 消费顺序 Button消费了几个Move事件后,接下来的Move都被Scrollview消费了 代码解读 在Scrollview的源代码里,可以看到onInterceptTouchEvent方法中, 阅读全文