Android项目遇到的技术问题记录(好的文章收藏一下)

  1. 微信支付的问题

    a.项目一般有测试环境和线上坏境两个环境(用release版本的签名),发布时,更换测试坏境签名为线上签名,之后支付一直不成功,配置是正确的,这是微信留下的坑,网上有很多清理微信缓存之类的就行,可是试了不行,干脆把微信直接卸载就可以了。

    b. 有时微信支付成功一次之后再也不会成功了,这次要去微信应用中心查看签名的情况,一定是签名配置错误了。

  2. carame2 api在小米6上(先预览,再跳转到其他页面后回来预览页面),会有绿色屏幕问题。目前暂没有好的处理方法,直接应过时的carame api替换。

  3. 多个fragment切换,有时候在当前fragment会看到底下的fragment(https://blog.csdn.net/changsimeng/article/details/73799948

    首先,Android管理Fragment有两种方式,使用add、hide、show的方式和replace方式,两种方式各有优缺点。
    replace方式
    如果使用这种方式,是可以避免重叠的问题,但是每次replace会把生命周期全部执行一遍,如果在这些生命周期函数 里拉取数据的话,就会不断重复的加载刷新数据,所以我们并不推荐使用这种方式。

    add、hide、show的方式
    虽然这种方式避免了可能重复加载刷新数据的问题,但是会出现重叠的问题。

    原因:
    当系统内存不足,Fragment 的宿主 Activity 回收的时候,Fragment 的实例并没有随之被回收。Activity 被系统回收时,会主动调用 onSaveInstance() 方法来保存视图层(View Hierarchy),所以当 Activity 通过导航再次被重建时,之前被实例化过的 Fragment 依然会出现在 Activity 中,此时的 FragmentTransaction 中的相当于又再次 add 了 fragment 进去的,hide()和show()方法对之前保存的fragment已经失效了,所以就出现了重叠。
    然而我们还是推荐使用这个,我们可以解决。

    重写onAttachFragment,重新让新的Fragment指向了原本未被销毁的fragment,它就是onAttach方法对应的Fragment对象

     @Override
     public void onAttachFragment(Fragment fragment) {
         if (tab1 == null && fragment instanceof Tab1Fragment)
             tab1 = fragment;
         if (tab2 == null && fragment instanceof Tab2Fragment)
             tab2 = fragment;
         if (tab3 == null && fragment instanceof Tab3Fragment)
             tab3 = fragment;
         if (tab4 == null && fragment instanceof Tab4Fragment)
             tab4 = fragment;
     }

     

  4. fragment有时候底部可见上一个fragment(https://blog.csdn.net/hepann44/article/details/80493490

  5. 同时添加三个fragment会重叠在一起,那个fragments时空的,所以hide不会生效
    解决:最后添加的那个fragment添加白色背景,把其他fragment掩盖

  6. CoordinatorLayout ,AppBarLayout,recyclerview配合使用。
    recyclerview第一条不能隐藏,不然会只要滑动了recyclerview就不能滑动AppBarLayout,可以添加一条高度的为0的header。

  7. 支付宝支付和阿里云推送UTDID冲突

    解决:https://help.aliyun.com/knowledge_detail/59152.html?spm=5176.7851421.2.9.DI68G0

    可以通过exclude关闭其他产品SDK对UTDID的传递性依赖,示例如下所示:
    implementation ('com.xxx:xxx.xxx:1.0.1') {
    exclude (module: 'alicloud-android-utdid')
    }
    或者:
    可下载并集成 剥离UTDID的支付宝SDK,保留阿里云平台的UTDID包。

  8. drawable不要在成员变量是上声明赋值
    val bgBlue= ContextCompat.getDrawable(mContext,R.drawable.chat_bg_blue)
    val bgGray= ContextCompat.getDrawable(mContext,R.drawable.chat_bg_gray)
    在adapter里复用会出问题,特别是宽高有变化的时候

  9. startService在Android8.0上抛异常(https://juejin.im/post/5b8b6f476fb9a019f0071379
    解决:JobScheduler替代后台服务
    官方文档解释为,用于处理被加入到job或service任务的一个辅助工具,8.0以下被当作普通的Intent使用startSerivce()启动service来执行。8.0以上任务被作为job用jobScheduler.enqueue()方法来分发

  10. 原生Geocoder根据经纬度获取位置不稳定
    解决:web api代替

 

  感谢丁小胖https://www.jianshu.com/p/a3923c1b535f

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值