Android 面试
主要记录java ,android 面试的知识要点
风吹过wu
这个作者很懒,什么都没留下…
展开
-
就只学一遍的单例模式
单例模式的意义单例模式属于创建型模式,它提供了一种创建对象的方式,确保只有单个对象被创建。单例模式的解决的痛点就是节约资源,节省时间从两个方面看:由于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级的对象而言,是很重要的因为不需要频繁创建对象,我们的GC压力也减轻了。而在GC中会有STW(stop the world),从这一方面也节约了GC的时间,单例模式的缺点,复杂的单例模式需要考虑线程安全等并发问题,引入了部分复杂度。饿汉模式public class Singleton原创 2020-07-21 15:46:41 · 205 阅读 · 0 评论 -
重学Android之UI优化
诊断过渡绘制点击设置中的开发者选项点击调试GPU过渡绘制弹出框中选择显示过渡绘制区域优化方法:尽量使用ConstraintLayout在布局层级相同的情况下,使用LinearLayout代替RelativeLayout根据源码我们发现RelativeLayout会对子View做两次measure。这是为什么呢?首先RelativeLayout中子View的排列方式是基于彼此的依赖关系,而这个依赖关系可能和布局中View的顺序并不相同,在确定每个子View的位置的时候,就需要先给所原创 2020-07-20 18:30:22 · 281 阅读 · 0 评论 -
重学Android之OOM优化
分析工具OOM发生以后,使用Android Studio 自带的Android Monitor dump出HPROF文件,然后使用SDK中的hprof-conv(位于sdk_root/platform-tools)工具转换为标准的Java堆转储文件格式,这样就可以使用MAT继续分析Android OOM类型:使用static修饰Context变量,Context被Hold住了导致Activity无法销毁Bitmap没有及时回收,调用recycle()函数并不能立即释放Bitmap,读取Bitm原创 2020-07-20 17:10:59 · 276 阅读 · 0 评论 -
重学Android之启动模式
1、Standard 模式首先这是一个默认的启动模式,举例: 我们想启动一个ActivityB,无论任务栈中是否存在ActivityB的实例,都会创建一个崭新的ActivityB位于栈顶。2、SingleTask模式举例启动Activity C任务栈已经存在C的实例并且未位于栈顶当启动Activity C 时,会将Activity C 上方所有的实例全部出栈让其位于栈顶,并且回调Activity C 中的onNewIntent()方法。任务栈不存在C的实例当启动Activit原创 2020-07-20 12:23:34 · 171 阅读 · 0 评论 -
Android Apk 瘦身 优化50%
Apk结构分析我们可以通过Android Studio 直接分析Apklib/: 包含特定于处理器软件层的编译代码,包含(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, 和mips)。大多数情况我们只用一种armeabi-v7aassets/: 包含应用可以使用AssetMananger对象检索的应用资源res/: 包含未编译到的资源 resources.arsc,主要有图片资源文件META-INF/: 包含CERT.SF和CERT.RSA签名文件,以转载 2020-07-15 14:39:22 · 272 阅读 · 0 评论 -
Activity的重建机制
什么是重建?引发重建的场景有哪些?通常是“系统资源的回收”或者’配置发生变化’导致的重建系统资源回收是指:当App处于背景模式的时候,可能因为系统内存不足而被回收配置发生变化是指:当系统配置发生变化时,比如屏幕方向、语言的改变重建的好处?对于资源回收的情况,保存状态并等到使用时再恢复,要比后台存留进程所占的资源要小的多对于配置变化的情况,当屏幕方向发生变化,只有重建,才有机会加载不同的视图,当横竖屏的布局不同的话状态保存和恢复的具体过程?首先,"状态"是指支撑UI界面内容展示的转载 2020-07-03 14:56:51 · 515 阅读 · 0 评论 -
Activity生命周期前传-Android 中的进程模式
何谓进程模式?Android 平台的App,通常情况下都是单进程。由于Android平台资源有限,需要为不同进程设置优先级,以便系统资源紧张的情况下,将优先级较低的进程杀死,以释放资源。因而,进程模式的存在就是为了标记和区分进程的优先级存在哪几种进程模式?按优先级从高到低,进程模式主要包括:前景进程、可见进程、服务进程、背景进程、空白进程这5大类别通常,App 进程的级别,由其活跃的或处于栈顶的组件的活动状况(比如所处生命周期)决定。1、前台进程是用于目前操作所需的进程。在不同的情况下,进程原创 2020-07-03 12:21:46 · 226 阅读 · 0 评论 -
Android 6.0、7.0、8.0、9.0适配
看到一篇好文章,关于适配的,总结的很全面,这里记录一下地址https://www.jianshu.com/p/a8fd3d1fa0a3原创 2018-11-22 09:39:30 · 526 阅读 · 0 评论 -
强引用,软应用,弱引用,幻象应用
在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用;Java中根据其生命周期的长短,将引用分为4类。1 强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回...原创 2018-12-05 18:10:23 · 227 阅读 · 0 评论 -
ANR定位和修正
原文链接如果发现机器上出现问题,我们可以通过查看/data/anr/traces.txt即可,最新的ANR信息在最开始部分。主线程被IO操作(从4.0以后网络IO不允许在主线程中)阻塞主线程存在耗时操作主线程存在错误的操作,比如Thread.wait 或者Thread.sleep等Android系统会监控程序的响应,一旦出现上面两种情况,则弹出ANR对话框应用在5秒内未响应用户的输入事...转载 2018-12-04 10:02:01 · 261 阅读 · 0 评论 -
JAVA内部类
内部类可以分为 成员内部类,静态内部类,局部内部类,匿名内部类好处内部类方法可以访问该类定义所在作用域中的数据,包括被 private 修饰的私有数据内部类可以对同一包中的其他类隐藏起来内部类可以实现 java 单继承的缺陷当我们想要定义一个回调函数却不想写大量代码的时候我们可以选择使用匿名内部类来实现找到一个很详细的链接 搞懂 JAVA 内部类...原创 2018-12-03 15:01:10 · 123 阅读 · 0 评论 -
GC 相关链接
记录一些GC相关的链接,比如原理,优化,方便自己复习Android GC 原理探究从实际案例聊聊Java应用的GC优化原创 2018-11-30 14:10:48 · 174 阅读 · 0 评论