记录一些android的基础知识
来源:互联网 发布:阿里云网站备案 编辑:程序博客网 时间:2024/05/22 13:04
1.service是运行在主线程的么?
本地service是运行在主线程的,本地service不能运行耗时操作;remote service不在同一进程中,需要编写aidl进行ipc通讯。
2.广播的类型:
普通广播,有序广播,本地广播,sticky广播
3.线程保护?
volitile synchronized
synchronized 可以保证原子性
volatile只能保证可见性
如:n=n+1,这种volatile就无法保护。
4.eventbus 监听的事件:
onEvent:如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
onEventMainThread:如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。
onEventBackground:如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么onEventBackground函数直接在该子线程中执行。
onEventAsync:使用这个函数作为订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync.
5.glide和imageloader优势
更强的生命周期管理,更多的缓存策略配置,更强的内存优化,可以直接嵌入okhttp。
理解engine.理解lrucache缓存。
6.自定义view绘制
(1)、自定义View的属性
(2)、在View的构造方法中获得我们自定义的属性
[ 3、重写onMesure ]
(4)、重写onDraw
把3用[]标出了,所以说3不一定是必须的,当然了大部分情况下还是需要重写的。
viewgroup必须复写onlayout,具体的layout已经实现onlayout不用复写。
7. view 绘制
performMeasure->performLayout->performDraw
理解DecorView,ViewGroup和SurfaceFlinger的交互。
8.事件传递
理解InputManagerService
理解onInterceptTouchEvent与onTouchEvent的调用过程
理解motionEvent和GestureEvent
9.listview节约空间、提升性能、防止错位的方法:
复用convertView
使用ViewHolder
item中有图片时,异步加载
快速滑动时,不加载图片
item中有图片时,应对图片进行适当压缩
分批和分页加载
错位用settag,gettag来判断。
10.activity启动模式:
singleTop,singleTask比较好说。
有三个Activity:A、B、C。
A的launchMode为singleInstance,
B、C为默认的standard,
第一次A–B–C–A跳完之后,为什么从A进入了C并且是之前的实例C,而不是想象中的新创建一个Activity B的实例 ?
- 记录一些android的基础知识
- android基础知识--混淆的记录
- 一些网络基础知识记录
- Android的一些要点记录
- Android studio的一些记录
- Android的一些基础知识(布局等)
- 整理出来的一些Android基础知识
- 整理出来的一些Android基础知识
- 关于Android service的一些基础知识集合
- Android基础知识学习记录
- android一些基础知识
- 一些Android基础知识
- 一些Android 基础知识
- Android中的一些基础知识
- 记录一些学习android的网址
- Android中关于Proguard的一些记录
- 写android程序碰到的一些记录
- android View的一些学习记录
- OC下的冒泡排序,直接插入排序,折半插入排序
- 12.kafka Producer Example
- jMeter使用案例
- Spark大数据处理之从WordCount看Spark大数据处理的核心机制
- php面试常用题目精解(一)
- 记录一些android的基础知识
- PHP面向对象编程设计模式(三)工厂模式
- JavaScript中的setTimeout()和setInterval()
- VS + wxWidgets开发配置指南
- 无序数组中找到最长连续子序列
- Android 配置Freeline教程
- 读书笔记(二)---看看LayoutInflater的源码
- QT调用OpenCV编译产生的“ACCESS_MASK”问题
- listview的二级优化