Android异常与性能优化相关面试问题-其他优化面试问题详解
2024-09-05 11:42:49
Android不用静态变量存储数据:
- 静态变量等数据由于进程已经被杀死而被初始化。
在Android中应用进程不是安全的,因为它会有系统给kill掉,但是在实际中可能会有这样的一个假象:当app被杀掉之后会重新再开的,其实这个再打开是重新创建了一个进程,启动上一次打开的Activity,由于此时的静态变量又会重新初始化则会造成数据不安全。 - 使用其它数据传输方式:文件 / sp / contentProvider。
有关SharedPreference的安全问题:
- 不能跨进程同步。
- 存储SharedPreference有文件过大的问题。一般只是存放一些配置信息,不能过大。如果过大会引起界面卡顿。
内存对像序列化:
序列化:将对像的状态信息转换为可以存储或传输的的形式的过程。其实现方式有如下:
- Serializable
注意:它在序列化的时候会产生大量的临时变量从而引起频繁的GC。 - Parcelable
它的性能优于Serializable,
总结:
1、Serializable是Java的的序列化方式,Parcelable是Android特有的序列化方式。
2、在使用内存的时候,Parcelable比Serializable性能高。
3、Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
4、Parcelable不能使用在要将数据存储在磁盘上的情况。也就是不要序列化在碰盘上的情况。
5、虽说Serializable效率较低,但还是推荐序列化使用它。
避免在UI线程中做繁重的操作:
这个就不多说啦~~
最新文章
- Todd's Matlab讲义第4讲:控制误差和条件语句
- sublime text 全局搜索
- Spring JDBC保存枚举对象含关键字报错原因之一
- Program B 暴力求解
- git常用命令[持续更新]
- 页面接口防刷 解决思路一nginx
- Xcode-Xcode 7.3 解决不能自动联想问题-备
- Scala actor的使用
- Spark Shuffle机制
- 【IDE】我的花里胡哨VS
- element-ui <;el-input>; +<;el-tree>;使用
- Vue+element组合el-table-column表头宽度自定义
- node编译C++,比如安装node-gyp失败的问题
- 一次ssh远程不能登录的排查
- FastDFS初步认识--上传下载流程介绍
- Linux基础-awk、变量、运算符、if
- $stateParams 详解
- 固定尺寸内存块的缓冲队列类及C++实现源代码
- 50篇经典珍藏 | Docker、Mesos、微服务、云原生技术干货
- Bind(";入库日期";, ";{0:yyyy-MM-dd}";) 关于asp.net格式化数据库日期字符串