更多问答 >>
-
2019-05-29 12:23
-
每日一问 gradle Transform API 和 Annotation Processor各有什么使用场景?能否相互替换与补充。
2019-06-13 21:54 -
每日一问 自定义 ViewGroup 的时候,关于 LayoutParams 有哪些注意事项?
2019-06-15 21:09 -
每日一问 详细的描述下自定义 View 测量时 MesureSpec.UNSPECIFIED
2019-06-20 00:26 -
每日一问 View中的getContext一定返回的是Activity对象吗?
2019-06-23 22:18 -
每日一问 你有什么好的学习习惯 或者 不错的 app 推荐给大家?
2019-05-24 11:09 -
每日一问 思考一下如果捕获一个 Activity页面上所有的点击行为?
2019-05-23 00:14 -
2019-05-21 23:59
-
每日一问 | 并发专题 volatile,synchronize,cas,happens before, lost wake up
2019-05-19 20:37 -
讨论 | Flutter Kotlin 如果二选一学习,你会怎么选?
2019-05-16 09:04

调用时机:
顾名思义,Attached就是附加的意思,Detached:分离。 onAttachedToWindow就是当这个View附加到Window(每个Activity里面都对应着一个Window)的时候,这个方法就会被回调。 onDetachedFromWindow刚好相反,它是当View与Window分离的时候回调。
使用场景:
自定义View的时候,某些比较重量级的资源,而且不能与其他View通用的时候,就可以重写这两个方法,并在onAttachedToWindow中进行初始化,onDetachedFromWindow方法里释放掉。
比如Bitmap,虽说现在不用主动调用recycle方法来回收,但在8.0及以上系统,手动调用是会立即释放所占用的内存的,所以个人认为还是有必要手动回收的,当然了,如果图片比较小,对内存没什么影响的就不用了。
一些用作计算的子线程,或其他 跟View显示有关的任务,在onDetachedFromWindow中也可以停掉了,因为大多数情况下,这些实时数据对于被分离后View已经没有意义了。
我记得一个比较好用,就是计算view的宽高,以前都是view.postDelay()里面去计算,后面知道了在onAttachedToWindow 里面就可以拿到view的宽高了
onAttachedToWindow 里并不能拿到View的宽高信息的,viewrootImpl 回调 window 的 onAttch 之后才调的 performMeasure 。都没 measur ...查看更多
onAttachedToWindow 里并不能拿到View的宽高信息的,viewrootImpl 回调 window 的 onAttch 之后才调的 performMeasure 。都没 measure 哪来的宽高哦。
View.post方法里获取宽高就行
你们谁说的对?
到底在onAttachedToWindow 能不能拿到宽高?
拿不到,可以自己测试下。
activity在onResume之后开启View的measure/layout/draw是异步的,不能够保证在onAttachedToWindow能够获取到正确的测量宽高和真实宽高 ...查看更多
activity在onResume之后开启View的measure/layout/draw是异步的,不能够保证在onAttachedToWindow能够获取到正确的测量宽高和真实宽高