工作中遇到的坑(二)

作者: 云呆呆 | 来源:发表于2018-10-17 19:03 被阅读9次

为什么Service和Activity都运行在主线程却无法确定其运行线程呢?

    因为有MessageQueue的存在,线程都是按在添加到MessageQueue的时间来顺序执行代码块。所以Service和Activity即使在同一个线程,因为事件加入时机不同,两者之间的执行顺序也不同,只能保证Activity内部和Service内部是顺序的,外部顺序不一定。

getAdapterPosition和getLayoutPosition的区别

OnBindViewHolder中的position不能直接传入onItemClickListenter中,最好用getAdapterPosition

getLayoutPosition和getAdapterPosition(比较极端情况下才会出问题,比如用户手机卡,疯狂点击)

具体区别就是adapter和layout的位置会有时间差(<16ms), 如果你改变了Adapter的数据然后刷新视图, layout需要过一段时间才会更新视图, 在这段时间里面, 这两个方法返回的position会不一样.

另外答案还提到, 在notifyDataSetChanged之后并不能马上获取Adapter中的position, 要等布局结束之后才能获取到.

而对于Layout的position, 在notifyItemInserted之后, Layout不能马上获取到新的position, 因为布局还没更新(需要<16ms的时间刷新视图), 所以只能获取到旧的, 但是Adapter中的position就可以马上获取到最新的position.

资源依赖问题:

如果B 依赖A,且AB都一个同名的资源,那么B使用的是A的资源,

一定要改成不同的名字

子线程刷新UI:

有时候在子线程刷新了UI并不会崩溃,例如Adapter.notify,但是界面会显示异常(例如需要划一下界面才会显示等),

1.需要检查Adapter.notify

2.图片加载

3.网络请求

个人Github:https://github.com/FortuneDream 

欢迎Star

相关文章

  • 工作中遇到的坑(二)

    为什么Service和Activity都运行在主线程却无法确定其运行线程呢? 因为有MessageQueue的存在...

  • 产品小记(2)

    次篇作为入坑产品的第二篇,主要记录自己工作中遇到的坑,以及从坑中跳出后的一些学习和反思,避免下次再入同样的坑。 距...

  • 工作中遇到的坑

    js错误: js比较错误 Java错误: 使用BigDecimal进行精度操作时double转int异常或丢失精度...

  • 工作中遇到的坑(一)

    打算写个续集,不定时更新。 一、获取控件的宽高信息: 在onCreate方法里面肯定是不可以的。因为在View树在...

  • 工作中遇到的坑(六)

    MVVM Model:数据模型以及Repository数据仓库(用于获取和组合来自网络,本地数据) View:界面...

  • 工作中遇到的坑(四)

    哈哈哈,没想到已经连载到第四集了 接口设计 这样设计接口把单个任意类型的数值往外部传,而不需要设计额外的接口 pu...

  • 工作中遇到的坑(五)

    BuildConfig类 buildConfig可以通过在gradle里面添加 buildConfigField ...

  • 工作中遇到的坑(三)

    scrollTo(X,Y) 直接滚动到那个点 scrollBy(dx,dy) 滚x,y个单位 display.ge...

  • fastjson坑 [cannot be cast to xxx

    工作中遇到的坑 最近老遇到一个异常 [com.alibaba.fastjson.JSONObject cannot...

  • 开发遇到的坑二

    问题:项目报这个错。 原因:拖入项目的第三方蓝牙API的.a文件所在的文件夹的名称命名有问题,名称中有空格。 分析...

网友评论

    本文标题:工作中遇到的坑(二)

    本文链接:https://www.haomeiwen.com/subject/tgirzftx.html