Android 开发踩坑记

持续更新中 …

20,工程明明加了 multiDexEnabled true,还是报错 multiDexList;或者 classes in the main-dex file (# methods: 72204 > 65536)
  • 解决方案:
    - 因为第一个主 dex 就已经超标了,加混淆。如果加过了,修改混淆;
    - 修改 minSdkVersion 到 21;这个得看产品是否答应。

19,桌面 Icon 替换了,但是在某些手机(Vivo,小米有缓存 Icon)没生效;
  • 解决方案:
    - 修改 Manifest里面的 Launcher Activity 的 android:icon 属性

18,targetSDK >= 26之后,startService 有时候会崩溃,因为 8.0 之后不允许后台服务了;
  • 解决方案:
    - 用 JobIntentService | JobService(推荐)
    - 改用 startForegroundService

17,targetSDK >= 21之后,WebView 需要开启第三方 Cookie 的支持;
  • 解决方案:
	if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
		CookieManager.getInstance().setAcceptThirdPartyCookies(this, true);
	}

16,TargetSDK升级到26,在部分8.0手机上,调起系统安装器,需要添加 REQUEST_INSTALL_PACKAGES 权限

15,部分手机输入法(华为P9),EditText设置软键盘监听时不回调监听;
  • 解决方案:Xml属性加上 android:inputType=“text”

14,对话框样式建议继承 Theme.AppCompat.Light.Dialog

13,有时候 Animation 结束没有回调 onAnimationEnd ;https://stackoverflow.com/questions/5474923/onanimationend-is-not-getting-called-onanimationstart-works-fine
  • 解决方案:建议加上超时保护 或 通过 postDelay 替代 onAnimationEnd;

12,播放动图的时候,尺寸较小或者帧数较少时,可以用 AnimationDrawable;不然低端机可能会OOM;
  • 解决方案:
    - 自定义 View 实现动画;(推荐)
    - Lottie;参考 https://www.jianshu.com/p/9a2136ecbc7b ;(推荐)
    - Gif ,或者一些第三方库; 参考 https://blog.csdn.net/qq_16445551/article/details/53367173 ;

11,在 Activity 中弹出 Dialog 时,使用不当会出现 BadTokenException 崩溃;
  • 解决方案:尽量使用 DialogFragment;

10,在 Android 5.0 (API level 21) 以下机器上, drawable xml 资源中引用 attr , 如果在 layout 布局中引用这样的 drawable 资源, 则会引发崩溃
  • 解决方案:Java 代码设置,参考 https://blog.csdn.net/liuxu0703/article/details/62243597

9,singleline 在 ListView 中效率不高, 滑动滞后,但是 maxline , ellipsize 并不能完美替代 singleLine。毕竟 singleline 会过滤回车。所以有些时候还是要用 singleLine;

8,获取动态壁纸信息 WallpaperManager.getWallpaperInfo() 可能会崩溃,系统内部空指针,需要 tray|catch

7,行间距属性 android:lineSpacingExtra,在5.0以下,就算设置了 maxLine=1 或者 singleLine=true,底部也会有对应的 xx dp,看着不居中;

6,跟 Activity 相关的异步操作,可以尝试用3.0之后出的 Loader,可以避免很多内存泄漏问题;

5,Viewpager中子 view 持有焦点会诱发卡顿问题;有必要减少使用 Button 之类会自动获取焦点的 View;
  • 解决方案:http://blog.csdn.net/edisonchang/article/details/49816319

4,多进程之间 AIDL 通信,可能会报错 DeadObjectException,需要使用 DeathReception 来监听 binder 是否有效;

3,targetSDK > 21后,通知栏小 icon ,不能有 RGB 图层;
  • 解决方案:https://cloud.tencent.com/developer/article/1015968

2,在部分手机上会出现回调 onStop、onDestory 慢的情况,可能原因:上个页面有动画在执行,内存泄漏;
  • 解决方案:在 onPause 的时候判断是否 isFinishing(),去销毁自己的数据。

1,全屏会导致 adjustResize 无效;
  • 解决方案:监听软键盘状态,自己修改布局,https://juejin.im/entry/584274d70ce4630057712697

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值