这些年,我爬过的 Android 坑 | 持续更新

这篇博客总结了作者在Android开发中遇到的各种问题,包括视图篇、服务篇、线程篇、网络篇、数据篇、机型系统适配篇、编译构建篇和版本控制篇等。在视图篇中,涉及UI更新、DialogFragment全屏、RecyclerView闪烁等问题的解决方案。服务篇讲解了服务中通知的处理。线程篇提到了新线程调用网络请求的注意事项。网络篇中讨论了Retrofit GET请求参数错误的处理。数据篇介绍了SQLite多线程读写问题的优雅处理。机型系统适配篇涵盖了解决各种品牌手机的适配问题。编译构建篇提到了Gradle构建时遇到的问题。版本控制篇讨论了Git的相关问题。博客还包含了其他一些Android开发中常见的坑和解决方案。
摘要由CSDN通过智能技术生成

总结目录

<<视图篇>>

  • 如何理解非主线程可以更新UI

    谷歌在 viewRootImpl 中检查更新ui的线程
void checkThread() {  
    if (mThread != Thread.currentThread()) {  
        throw new CalledFromWrongThreadException(  
                "Only the original thread that created a view hierarchy can touch its views.");  
    }  
} 

在执行onCreate的时候这个判断并没有执行到

  • dialogFragment 全屏时左右留空的解决方案

    在 fragment#onResume 中重新调整 window 布局

<item name="android:windowIsFloating">true</item>

此时 window 为 wrap_content,如果出现左右空白,则考虑使用上个问题的方案。

  • recyclerview 调用 notifyItemRemoved 方法移除某个 Item 之后因为引用 position 引起 crash 的原因

    `notifyItemRemoved`方法并不会移除列表的数据源的数据项导致数据源中的数据与列表Item数目不一致,需要同步刷新数据源。
  • recyclerview 局部刷新Item时会因为默认动画导致闪烁的解决方案

    因为recyclerview存在ItemAnimator,且在删除/更新/插入Item时会触发,可设置不支持该动画即可。

((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
  • recyclerv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值