琐碎笔记

android

android默认使用sp作为字号单位。
sharePreferences保存文件的路径和扩展名是data/data/package_name/shared_prefs/*.xml
每一个dvm都是在Linux中的一个进程。
android2.2对应的apiLevel是8。
1px=(dpi/160)dp,1in=72pt=160sp=160dp
Message提供消息池,thread默认不提供资源池,AsynTask由线程池改造,提供资源池,Looper不提供资源池。
银行家算法避免死锁。
android系统4.4版本开始运用ART(android runtime)替换之前的Dalvik虚拟机模式。
reactNative< Image>控件0.46.4以后不能用来嵌套控件,用< ImageBackground/>代替
android Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中
android默认情况下,广播接收器运行在UI线程
android每个线程中只能存在一个Looper,Looper中维护一个MessageQueue
tcp三次握手为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误.
android中< merge />可以有效减少View树的层次来优化布局.
ARouter的url路径至少需要2级
从eclipse和AndroidStudio下载的sdk可能互相不兼容,打包会有问题。(dx.jar文件无法从sdk导出)
android在锁屏状态使用AlarmManager做定时操作,时间会不精确。为了电量各系统对其进行了处理延迟。
android 开一个服务在后台一直在采集gps信息,锁屏经过一段长时间,gps会休眠,但是对于代码来说,gps时活动着的,只是每次采集到的数据都是一样的数据。
android 视频推流采集的时候,设置分辨率需要摄像头支持。
android 原生spinner控件在各个手机厂商效果不一,有些整个item可点击,有些只有文字可点击。
android runtime模式实现了ahead-of-time(AOT)静态编译和just-in-time(JIT)动态编译交互进行。
android 7.0增加对VR的支持。
android 向服务器上传文件会报413错误,因为nginx没做限制的话默认是1M
启动activity设置启动模式,代码的优先级比AndroidMenifest高。
Android对每个应用有内存限制 Runtime.getRuntime().maxMemory()
LruCache常被用作内存缓存,DiskLruCache常被用做存储缓存。
单例模式的生命周期与Application一致。
android函数库中如果使用了Annotation Library并使用Gradle生成aar压缩包,会抽取注解信息放入aar文件中的annotations.zip文件。

glide

glide通过添加fragment的方式获取界面的生命周期。
在非主线程使用glide,不管传入的是activity还是fragment的content,都会被当做application处理。
glide缓存分为内存缓存和硬盘缓存。
内存缓存的主要作用是防止重复把数据放入内存中。
硬盘缓存的主要内容是防止应用重复从网络或其他地方下载和读取数据。
近期最少使用算法(LruCache)主要原理是使用强引用存储在LinkedHashMap中,把最少使用的对象在缓存值达到预定值之前从内存删除。
glide内存缓存使用LruCache和弱引用。使用中的图片用弱引用缓存,不在使用的图片用LruCache缓存。
imageView的scaleType默认是FIT_CENTER
改变checkbox或radioButton的选中颜色使用属性android:buttonTint
glide的默认硬盘缓存大小是250M
glide加载图片的默认格式是RGB_565,picasso默认是ARGB_8888。
ARGB_8888的图片更细腻但内存开销大,RGB_565更节省内存,但效果差一些。

activity的启动过程

启动activity的过程简单来说是讲请求activity的请求给instrumentation,然后它通过Binder向AMS发请求,AMS内部维持着一个ActivityStack并负责栈内Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期的调用。

onSaveInstanceState

onSaveInstanceState只有在Activity被异常终止的情况下才会调用。
onSaveInstanceState在onStop之前,onRestoreInstanceState在onStart之后。

android进程

android进程以:开头属于当前应用的私有进程,其他应用组件不能跟它跑在同一进程。
android进程不以:开头属于全局进程,其他应用通过ShareUID方式可以跟它跑在同一进程。
两个应用要跑在同一进程需要有相同的ShareUID并且签名相同,可以互相访问对方私有数据。
使用多进程的问题:静态成员和单例模式完全失效;线程同步机制完全失效;SharePreference可靠性下降;Application会多次创建。

数据结构

CopyOnWriteArrayList类型支持并发读写。

View绘制

android中View平移top,left,bottom,right是原始的值,是不变的,变的是x,y,translationX,translationY。
MotionEvent的getX/getY返回的是相对于当前View左上角的x,y坐标,getRawX/getRawY返回的是相对手机屏幕左上角的x,y。
TouchSlop是系统所能识别的滑动最小距离。常量,跟设备有关。通过ViewConfiguration.get(getContext()).getScaledTouchSlop()获得。
VelocityTracker速度追踪,追踪手指在滑动过程中的速度。
GestureDetector辅助检测用户的单击、滑动、长按、双击等行为。
scrollTo和scrollBy实现滑动只能将View的内容进行移动,不能将View本身进行移动。
设置了onTouchListener,onTouch会屏蔽掉onTouchEvent,再onTouchEvent中设置了onClickListener,o

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值