项目难点汇总 && 美团前端一面

1、相册项目难点
    recyclerview加载大量图片的时候如何保证不出现卡顿和内存抖动现象;
    1、加载图片的时候采用多线程异步加载 (AsynTask)
    2、recyclerview快速滑动的时候暂停加载,慢速滑动或者停止滑动的时候开始加载
        Recyclerview其中有一个 OnScrollListener ,重写onScrolled方法,判断偏移量dy是否超过阈值。其中的onScrollStateChanged(RecyclerView recyclerView, int newState),第二个参数 newState 就是滑动的状态,根据滑动的状态判断是否加载。
    3、当前呈现给用户的加载;当前未呈现的不加载
        获取可见item的上下位置区间,只加载区间内的数据。
    4、采用复用池策略,把使用过的bitmap回收复用,防止频繁创建bitmap,出现内存抖动
    5、采用缓存策略,缓存图片,提高加载的效率,LruCache
    6、图片压缩

美团前端一面
1、View和SurfaceView的区别
    绘图线程不同:View在主线程上绘图,而SurfaceView在子线程上绘图。
    缓冲机制不同:View没有双缓冲机制,而SurfaceView底层已实现双缓冲机制。
    适用场景不同:View适用于主动更新,如定时刷新等,而SurfaceView适用于频繁刷新或刷新时数据处理量很大的场景。
2、内存泄漏造成的原因
    1、非静态内部类和匿名类内部类都会潜在持有它们所属的外部类的引用
    2、资源未关闭造成的内存泄漏
    3、单例造成的内存泄漏
全部评论

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务