首页 > 技术文章 > Android疑问记录

wushengwuxi 2020-11-04 13:44 原文

等有时间就具体分析原因:

1、子线程中为什么调用View的invalidate()方法会抛出"Only the original thread that created a view hierarchy can touch its views."异常而postInvalidate()可以调用?
(1) invalidate()一步步向上请求重绘,最终到ViewRootImpl类,在不启用硬件加速的情况下会检查线程,抛出该异常,启用硬件加速情况下不会抛出该异常,具体逻辑见https://www.cnblogs.com/wushengwuxi/p/13946247.html
(2) postInvalidate(): 委托给ViewRootImpl中handler进行重绘操作。

2、ViewPager是如何进行预加载的?

3、Activity为什么需要在AndroidManifest.xml中注册?在哪儿检测Activity没有注册的?(不只Activity,还有Service、Broadcast Receiver、ContentProvider

4、Handler发送的消息为什么可以被传入Handler的Callback接口以及Handler重写的handleMessage方法接收到,先后顺序如何?
https://www.cnblogs.com/wushengwuxi/p/13883830.html
5、ScrollView是如何进行滑动的?

6、JetPack中ViewModel是如何检测Activity以及Fragment生命周期的?

7、ThreadLocal是如何隔离不同线程对应变量的?

8、Activity是如何启动的(启动其他应用的Activity)?

9、Toast为什么可以脱离Activity存在?

10、布局中Fragment中的View是如何加载到布局中的?通过FragmentManager加载的Fragment是如何显示的?View布局中merge标签是如何合并的?
https://www.cnblogs.com/wushengwuxi/p/15080735.html

11、SharedPreferences和数据库是如何存储数据到手机的?
https://www.cnblogs.com/wushengwuxi/p/15167336.html

推荐阅读