面试总结 优化

1.Flutter的setState
2.dart的多线程
dart的多线程
3.java线程池
io密集型和Cpu密集型参数设置
CPU密集型和IO密集型
CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

IO密集型任务指任务需要执行大量的IO操作,涉及到网络、磁盘IO操作,对CPU消耗较少。

和线程池配置的关系
CPU密集型任务应配置尽可能小的线程,如配置CPU数目+1个线程的线程池。
由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*CPU数目。

activity的启动模式 与addFlag

双向链表的添加个修改

包体积优化。
1.Flutter 下发技术 https://tech.meituan.com/2020/09/18/flutter-in-meituan.html 大概减少5mb
2.lint pr的时候进行模拟打包进行applint 静态检查代码资源
3.proguard 混淆
压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性;
优化(Optimize):分析和优化相关方法字节码,移除无用的指令;
混淆(Obfuscate):使用随机的小写且无意义的名称对类、字段和方法进行重命名;
预校验(Preverify):在Java平台上对处理后的代码进行预校验,确保加载的class文件是可执行的。
原文链接:https://blog.csdn.net/AndrExpert/article/details/103483635
4.andResGuard
AndResGuard是微信团队开源的一个缩小APK大小的工具,它的原理类似于Proguard,但是只针对资源,它会把原本冗长的资源路径变短,比如讲res/drawable/wechat变为r/d/a。相比于Proguard,AndResGuard的优势在于它通过自己实现安装包解压和利用7z极限压缩进行打包,使得整个混淆打包过程不依赖源码和编译流程,只需输入一个APK文件(无论签名与否、debug版、release版),从而做到最大混淆,大大减少了安装包体积,同时也提升了APk被破解的难度 大概减少4mb
5.png图片压缩 使用webp
内存优化
使用sparryArray替代hashmap
oom监控 信息

image.png

android 启动优化

冷启动时间统计

application创建时间=splashOnCreate()-start()
Splash渲染时间=onWindowFocusChange()-onCreate()
Splash停留的时间=mainActivityOnCreate()-splashOnCreate()
MainActivity渲染时间=onWindowFocusChange()-onCreate()
冷启动时间=MainActivityonWindowFocusChange()-applicationOnCreate()

1.启动页主题背景设置成闪屏页图片
2.线程优化 使用合理的启动架构
微信内部使用的 mmkernel
阿里 Alpha
3.启动过程中减少系统调用
启动过程中不要启动子进程
启动过程中除了 Activity 之外的组件启动要谨慎
4.appStrart 合并ContentProvider的调用
5.提高主线程优先级
GC 优化
启动过程中减少 GC 的次数
避免进行大量的字符串操作,特别是序列化和反序列化
频繁创建的对象需要考虑复用
转移到 Native 实现
资源重排
Pagecache 机制可以减少启动过程中的真正 IO 的次数
使用reduex
主页面布局优化
闲时调用
使用ideHandler 获取Token信息
android 帧率检测
上传机制

oom 监控 监控上传机制

crash 率优化
在mainLoop中发生异常保障looper可以继续循环
在子线程的发生异常 保证主线程的looper继循环
由于布局 绘制 布局导致的织舞者产生的异常 关闭当前界面
在生命周期中发生异常时,对ActivityThread里面的 Instumentation 进行代理

1)aapt 为res目录下的资源生成R.java文件, 同时为AndroidMainfest.xml 生成Mainfest.java文件

2)aidl 把项目中自定义的aidl文件生成相应的Java代码文件

3)javac 把项目中所有Java代码编译成class 文件。 包括三部分java代码,自己写的业务逻辑代码,aapt 生成的Java文件,aidl生成的Java文件。

4)proguard 混淆同时生成proguardMapping.txt , 这一步是可选的。

5)dex 将所有的class 文件(包括第三方库的class文件) 转换为dex文件

6)aapt 打包,将res目录下的资源,assets目录下文件,打包成一个.ap_文件

7)apkbuilder , 将所有dex文件,ap_文件,AndroidMainfest.xml打包为.apk文件, 这是一个未签名的apk包

8)jarsigner 对apk 进行签名

9) zipalign 对要发布的apk文件进行对齐操作,以便运行时节省内存

家宴准备了西式菜

回答不好的地方

应该提升业务的主动性 模块化
应该思考业务方向

synchronized修饰(非静态)方法和synchronized(this)都是锁住自己本身的对象;synchronized修饰静态方法和synchronized(类名.class)都是锁住加载类对象;synchronized(object)是锁住object对象

12.1.ViewModel为什么不会随着Activity的屏幕旋转而销毁

主要是通过onRetainNonConfigurationInstance方法把ViewModelStore缓存在NonConfigurationInstances中,在getViewModelStore取出ViewModelStore。具体内容看第 11 节

12.2.为什么在对应的作用域内,保正只生产出对应的唯一实例

ViewModelStore的 get方法,是根据 key 来取值的,如果 key相同,那取出来的ViewModel就是一个。具体内容看第 9.2 小节

12.3.onCleared方法在什么调用

当 Activity 真正销毁的时候,而不是配置改变会调用ViewModelStore的 clear进而调用了ViewModel的onCleared,具体内容看第 9.2 小节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • 启动优化 冷启动 冷启动指的是应用程序从头开始:系统的进程没有,直到此开始,创建了应用程序的进程。 在应用程序自设...
    小夫哥阅读 372评论 0 0
  • 夜莺2517阅读 127,712评论 1 9
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,523评论 28 53
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,585评论 2 9
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,181评论 4 8