android相关技术问题总结

android基础

activity生命周期总结

activity生命周期

android优化:

冷启动优化:

  冷启动就是在启动应用前,系统中没有该应用的任何进程信息

  热启动:用户使用返回键推出应用,然后马上又重新启动应用

  1.减少onCreate()方法的工作量

  2.不要让Application参与业务的操作

  3.不要在Application进行耗时操作

  4.不要以静态变量的方式在Application中保存数据

  5.布局/mainThread

其他优化:

  一。android不用静态变量存储数据

      1.静态变量等数据由于进程已经被杀死而被初始化

      2.使用其他数据传输方式:文件/sp/contentProvider

  二。有关sp问题

      1.不能跨进程同步。每个进程都会维护一个sp副本,只有应用结束,才会同步数据

      2.存储sp的文件过大问题

  三。内存对象序列化:序列化:将对象的状态信息转换为可以存储或传输的形式的过程

      1.Serializeble:序列化的时候会产生大量的临时变量,从而频繁引起gc

      2.Parcelable:android特有,性能高,不能存储磁盘,多用于进程间通信

   四。避免在ui线程中做繁重的操作

热门前沿

mvc/mvp/mvvm

  mvc:

    1.利用mvc设计模式,使得项目有了很好的可扩展和维护性

    2.controler(控制器)是一个中间桥梁的作用

  mvp:

    m:依然是业务逻辑和实体模型

    v:对应activity,负责View的绘制以及用户交互

    p:负责完成View与Model间的交互

  mvvm:

    1.View:对应Activity和Xml,负责View的绘制以及用户交互

    2.Model:实体模型

    3.ViewModle:负责完成View与Model间的交互,负责业务逻辑

android插件化

  一。插件化由来: 方法数超过65536/64k,DexClassLoader,PathClassLoader

解决问题:

  1.动态加载apk

  2.资源加载

  3.代码加载

android热更新

一。热更新流程

  1.线上检测到严重的crash

  2.拉出bugfix分支并在分支上修复问题

  3.jenkins构建和补丁生成

  4.app通过推送或者主动拉去补丁文件

  5.将bugfix代码合到master上

二。主流热更新框架

  1.Dexposed

  2.AndFix

  3.Nuwa

1.Android类加载机制

  1.PathClassLoader

  2.DexClassLoader

2.热修复机制

  1.dexElements

  2.ClassLoader会遍历这个数组

进程保活

一。android进程的优先级

  1.Foreground process

  2.Visible process

  3.Service process

  4.Background process。

  5.Empty process。只是为了缓存

二。android进程的回收策略

  1.Low memory killer:通过一些比较复杂的评分机制,对进程进行打分,然后将分数高的进程判定为bad进程,杀死并释放内存

  2.OOM_ODJ:判别进程的优先级

三。进程保活方案

  1.系统广播拉活:开机,sd卡卸载等,缺点:发生事件才能拉活

  2.系统service机制拉活:当service因为系统内存不足的情况下,杀死,系统内存足够拉活,缺点:第一次5s内拉活,第二次10s,第三次20s,第三次就不再拉活。系统工具强制stop时,不能拉活

  3.利用native进程拉活。缺点:android5.0对系统管理,利用native监控主进程拉活不可以

  4.利用JobScheduler机制拉活,android5.0之后提供,

  5.利用账号同步机制拉活。最新的android版本对这个进行改动,不再适用

IML

lint检查

一。什么是Android lint检查

  Android Lint是一个静态代码分析工具,它能够哦对你的android项目中潜在的bug,可优化的代码,安全性,性能,可用性,可访问行,国际性进行检查

二。lint工作流程

三。配置lint.xml

kotlin

一。kotlin

  1.kotlin是一种基于JVM的编程语言

  2.是对java的一种扩展

  3.支持函数式编程

  4.kotlin类与java类能互相调用

二。环境搭建

  1.as安装kotlin插件

  2.编写kotlin测试

  3.自动配置build

IO

view绘制

  Activity->PhoneView->DecorView->View

  1.measure:判断是否需要重新计算View的大小

  2.layout:判断是否需要重新计算View的位置

  3.draw:判断是否需要重新绘制View

listview性能优化

1.convertview

2.viewHolder

3.getview中尽量少做耗时操作

4.listview中item元素避免半透明

5.开启硬件加速

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值