android 开发坑点记录

  1. 拨号功能
    1) 调用拨号界面前需要判断当前设备是否有拨号程序,可使用try-catch捕获打开异常,避免应用闪退
  2. webview开发问题
    1) 缓存问题——没有开启缓存可能导致网页部分功能不能正常使用,而出现异常情况
    2) WebViewClient对象下的方法都为异步回调方法,如果在这些方法有android UI相关操作则需要注意activity关闭时不再执行到相应的操作,比如dialog的关闭操作,在onDestroy()中提前执行,同时dialog的显示和关闭要使用同步锁
    3) url拦截会导致头信息丢失(还可能有其他信息丢失),从而导致一些功能异常,因此需慎用
    4) 关于302重定向问题,还未解决
    5) 避免webView内存泄漏:https://www.jianshu.com/p/3e8f7dbb0dc7 http://blog.csdn.net/xygy8860/article/details/53334476?utm_source=itdadao&utm_medium=referral
  3. 悬浮窗口问题
    1) 悬浮窗多次添加会导致闪退——在添加或移除悬浮窗的代码外围使用try-catch捕获异常,避免闪退
    2) 悬浮按钮如需全局移动则需要将flags属性设置为FLAG_LAYOUT_IN_SCREEN,但不要同时设置FLAG_LAYOUT_INSET_DECOR,否则在状态栏下悬浮按钮会被遮挡住部分视图
  4. 文件操作问题
    1) 在主线程中执行文件操作在少量4.4机型中可能会出现ANR,因此为了避免ANR,尽量不要在主线程中操作文件
  5. 多界面同时切换问题(android系统bug)
    1) 当当前应用在切换界面的同时也在切换应用的时候,部分机型会出现ANR,当界面频繁快速切换时也有可能出现 —— 尽量避免频繁切换界面且在应用跳转时不要执行界面切换相关操作
  6. 第三方登录:
    1)QQ授权登录的签名配置需要全部小写
    2)微信授权登录的签名配置需要全部大写
    3)注意包名、appID必须和第三方后台配置一至
    4)如果配置信息都一至,还是无法授权,则可能是缓存问题(如:微信缓存了错误的签名票据)
    5)签名的填写千万千万不要手动敲,一定要复制,不然极容易出错(已踩坑,而且是很深很深的坑)
    6)QQ提供的签名获取工具无法获取一些应用的签名,可以使用微信或微博提供的签名获取工具获取
  7. 在manifast文件中配置meta-data数据时,如果属性value的值为一长串的数字,那么必须在前面加上”\ “(斜杠和空格),否则编译之后,该数值会被修改,从而造成错误;如原本value=”1234567890123”,那么应该改成value=”\ 1234567890123”,这样编译出来的apk中对应的值才是正确的
  8. 如果出现Activity或一些成员变量莫名其妙被回收变NULL值,则可能是android:configChanges配置不当,Activity被系统回收导致(只有部分机型会出现),示例:跳转第三方支付返回后闪退;QQ、微信授权登录返回后闪退。关于android:configChanges配置说明,请看文章:http://blog.csdn.net/u012670875/article/details/79626922 ;所以在开发与第三方应用有关联的APP时,必须好好考虑下android:configChanges配置,避免出现异常。
  9. 在开发有多层次的Activity相互跳转销毁时,需要仔细考虑android:launchMode配置问题,避免Activity莫名被回收导致异常闪退,或Activity长时间没被回收而浪费内存;android:launchMode配置相关文章:http://blog.csdn.net/u012670875/article/details/79626484
  10. android 使用Animation.startNow()启动动画时会有兼容问题,使用View.startAnimation(Animation)启动动画可以解决该问题
  11. app安装时提示安装包损坏,可能的原因有:1.安装包不完整(确实损坏)2.同包名的不同app已经安装在手机上(比如调试时安装的应用)3.已经安装的同包名APP的编译版本较高(比现在要安装的高)相关文章:https://www.jianshu.com/p/f8bf29393cfa
  12. 使用https协议时,如果使用Apache HttpClient进行联网通讯,则可能在低版本的Android设备上无法联网,提示证书不匹配,需要改为HttpsURLConnection则可以解决。参考文章:https://blog.csdn.net/wangbaochu/article/details/50915938
  13. app签名相关:在上线三星渠道的时候,会提示签名版本过低不适用的错误,这个时候需要使用apksigner对app进行签名,而不能使用apktool,签名命令:java -jar apksigner.jar sign –ks kestore的路径 –out output.apk input.apk 。 相关的文章:
    https://blog.csdn.net/mrzhouxu/article/details/79225439
    https://blog.csdn.net/qq_32115439/article/details/55520012
    https://blog.csdn.net/lamelias/article/details/53669417
    同问题描述链接:https://stackoverflow.com/questions/45182643/double-signing-apk-sha1-other-issues
  14. 为了避免因activity销毁而导致dialog等动态界面显示时闪退问题,对于Activity对象和Context对象的管里必须严格,不要让其他对象(特别是单例对象)直接持有Activity或Context的引用,改成需要使用时动态获取,并且需要有统一的方法判断Activity或Context的生命周期是否是处于可用的状态。
  15. 待补充。。。
  16. 待补充。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章