美文网首页
项目难点

项目难点

作者: 过期的薯条 | 来源:发表于2019-12-26 12:08 被阅读0次

1.surfaceView问题

1.surfaceView 双缓冲机制,导致背景闪烁 (清空canvas背景,将绘制的数据变量设置成全局变量)

  1. surfaceView 卡顿问题。为了降低cpu消耗,在onAttachWindow中打开线程绘制,在DeatchWindow中取消线程绘制。于是导致了卡顿问题。

官网文档说:surfaceView 必须在surfaceCreated和surfaceDestroy之间,运行线程 否则就会导致卡顿

2.cpu占用率过高

  1. cpu过度绘制
  2. 通过profiler查看一些,异常的线程运行情况,加入睡眠
  3. 像摄像头等,降低采样率
  4. 一些设置成gone的view,依旧会重新绘制,所以可以考虑设置成null,需要的时候在加载进来
  5. v使用merge .ViewStub 优化布局
  6. so占用线程资源 优化

3. 内存优化

  1. 内存泄露
  2. bitmap占用的资源,更改Bitmap编码
  3. 能使用layer就是用layer
  4. 用ArrayMap/SparseArray代替HashMap (SparseArray key为int类型,避免了自动装箱/拆箱,ArrayMap,千级一下用这俩个 性能会更加好)

4.多线程问题

1. 四种线程池:
cachedThreadPool, singleThreadPool, cachedThreadPool,fixedThreadPool,scheduledThreadPool

2.线程中断的方式

  1. 在run方法中加入interrupt()判断,当外部调用了interrupt(),线程的isinterrupt ()变成true了,此时可以达到中断的目的。

2.run方法中 睡眠。通过异常终止线程的运行

3.多线程三种锁:

  • 方法锁:多线程操作同一个对象的 相同方法,

  • 对象锁:给同步的代码块 加上锁

  • 类锁:修饰静态变量/静态方法,适用于多线程下,同一个class 有多个实例的情况

  • wait 对象调用wait方法之前,要先加锁,然后调用wait,让线程挂起

  • notify, 唤醒一个处于等待状态的thread

  • thread.yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会

  • thread.join 比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

  • thread.start 调用run方法 和thread.run 直接调用的区别:
    调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。

5. anr问题

1.广播/service中有耗时任务导致anr,这类比较好解决

2.android系统 cpu占用过高,打开一些activity,Logcat 中提示input anr,打印出 各进程占用的anr数据

3.查看data/anr data/tombstones 查看anr和 so异常日志

6.tv端事件分发+焦点跳转

7.eventbus源码解析

8. Glide 如何维护Bitmap池的?

Glide.with()-----初始化RequestManager------得到SingleRequest----SingleRequest.into 实际上调用的是Engine的into方法-----Engine.into方法会进一步调用loadFromActiveResources/loadFromCache。假如内存中没有EngineJob 就开始工作

9.接触到的容器

HashMap,ArrayMap,SparseArray,CurrentHashMap,HashTable

10.ota升级的bug

ota升完级,直接崩溃,so提示找不到某个so。不进行ota升级或者恢复出厂设置,就能进行安装运行。出现的问题是ota升级之后,/data/dalvik-cache/arm 中之前的dex 没有被清除,dex不一致,

11 .四种元注解

@Retention (Source,Class,Runtime) @Target (Class Method)

12. 插件化方案的了解

相关文章

  • 项目难点

    1.surfaceView问题 1.surfaceView 双缓冲机制,导致背景闪烁 (清空canva...

  • iOS模块化心得

    在原有项目上进行模块化的难点是,给原有项目分层和解耦 难点1:项目分层 我们项目分层结构基础层:各种基类,常用分类...

  • 政府IT项目的难点

    业务方领导是领域专家,通常对IT技术、信息系统了解程度没那么高,沟通过程中话术上要尽量贴近对方的语言体系 法律法规...

  • 文档

    微信管理系统设计文档 项目技术难点 设计

  • 2022-06-30 蚂蚁一面

    这个还以为是hr面,很轻松的接起电话,没想到是业务面 介绍项目项目难点,如何克服,业务规划难点解决有没有数据支撑 ...

  • 数据治理项目的难点

    马云在9月份重庆智能大会上8分钟的讲话中30次提到数字化,人类全面进入数字时代的标志是传统行业大规模受益于数字化转...

  • 阿里面经

    1. 项目 介绍项目; 项目中的难点;主要工作;项目优化; 在学校里(或实习)做的项目主要用到什么技术; 很多有问...

  • 再出发

    框架: 梳理已经完成的项目,挖掘项目中自己的成长点&项目的亮点&难点,理清项目的背景、意义,待优化点。 确定自己面...

  • 阿里面筋

    一面(可能凉了) 讲学什么课程了,介绍项目以及难点 简输的难点? post表单的解析 HTTP 有什么请求方法 G...

  • 华为面试过程

    一面 聊项目 项目中的难点 实习的项目的项目架构 什么是去中心化 Zookeeper为什么可以去中心化 分布式架构...

网友评论

      本文标题:项目难点

      本文链接:https://www.haomeiwen.com/subject/qmnfoctx.html