阅读更多

1顶
0踩

移动开发

转载新闻 Android 开发中,有哪些坑需要注意?

2015-11-03 15:50 by 副主编 mengyidan1988 评论(1) 有4521人浏览
本文转自:知乎网 作者:张明云

最近正准备写一篇关于这方面的文章,正好看到知乎上的这个问题:Android开发中,有哪些坑需要注意? - Android,索性以写答案的方式来写这篇文章,顺便推荐我之前在知乎上提出的一个问题:在Android开发的过程中,有哪些坑是值得你放在checklist中警示自己的? - 程序员,里面有一些有参考价值的答案。作为一个有三、四年Android应用开发经验的码农,自然会遇到很多坑,下面是我能够想起的一些坑(实践证明不记笔记可不是个好习惯),后面有想到其它坑会陆续补上。

作为一个有三、四年Android应用开发经验的码农,自然会遇到很多坑,下面是我能够想起的一些坑(实践证明不记笔记可不是个好习惯),后面有想到其它坑会陆续补上。




  • 同一个应用的JNI代码,不要轻易换NDK编译的版本,否则会有很多问题(主要是一些方法实现不一样,并且高版本对代码的检测更严格),比如r8没有问题,但到r9就有问题了,这是个大坑;
  • Android的JNI代码中,有返回类型的函数没有返回值编译的时候也不会报错;
  • 当前Activity的onPause方法执行结束后才会执行下一个Activity的onCreate方法,所以在onPause方法中不适合做耗时较长的工作,这会影响到页面之间的跳转效率;
  • 谨慎使用Android的透明主题,透明主题会导致很多问题,比如:如果新的Activity采用了透明主题,那么当前Activity的onStop方法不会被调用;在设置为透明主题的Activity界面按Home键时,可能会导致刷屏不干净的问题;进入主题为透明主题的界面会有明显的延时感;
  • 不要在非UI线程中初始化ViewStub,否则会返回null;
  • 公共接口一定要考虑到代码重入的情况,能设计为单例就尽量用单例;
  • 不要通过Bundle传递大块的数据,否则会报TransactionTooLargeException异常:java - Issue: Passing large data to second Activity
  • 尽量不要通过Application缓存数据,这不稳定:不要在Android的Application对象中缓存数据!
  • 尽量不要使用AnimationDrawable,它在初始化的时候就将所有图片加载到内存中,特别占内存,并且还不能释放,释放之后下次进入再次加载时会报错;
  • 9图不能通过tinypng压缩,不然会有问题;
  • genymotion模拟器快是因为它是基于x86架构的,如果你的应用中用到了so,但没有x86架构的so,只能放弃使用它;Android Studio的模拟器也一样;
  • Eclipse的Android开发环境配置好后不要轻易升级ADT和build tools,不然会浪费你很多时间,还有就是一个workspace中的工程不要太多,不然每次启动都会很慢;
  • Android studio每个版本、gradle每个版本差别都比较大(我是这样认为的),对于jni代码的编译建议在Eclipse中进行,如果在Android studio中开发jni会浪费很多时间,主要是编译脚本的配置比较麻烦;
  • Eclipse中的Lint太不靠谱,特别是主工程中依赖library的时候,很多提示都是有问题的,建议使用Android Studio的工程清理工具,特别推荐。
  • AsyncTask默认自己维护一个静态的线程池,而该线程池只允许同时执行一个线程,也就是说,不管多少个AsyncTask,只要是调用execute()方法,都是共享这个默认进程池的,你的任务必须在之前的任务执行完以后,才能执行。调用AsyncTask的excute方法不能立即执行程序的原因分析及改善方案。


本文转自:知乎网——张明云
  • 大小: 133.8 KB
1
0
评论 共 1 条 请登录后发表评论
1 楼 烧饼儿 2015-11-12 10:57
我靠 这真是学到了 现在刚准备eclipse 转andriod studio 一路都是坑

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Android开发中那些需要注意的坑

    这个是看知乎的时候发现的一个问题,感觉挺有意思,就将自己遇到的坑记录下来。 1、Andorid L theme colorPrimary 不能使用带有alpha的颜色值,否则会有异常抛出, 直接判断了是否alpha是否等于0或者255,其他都会...

  • Android中使用LayoutInflater要注意的一些坑

    LayoutInflater类在我们日常开发中经常会用到,最近在使用中就遇到了一些问题,所有下面这篇文章主要给大家总结了关于Android中使用LayoutInflater要注意的一些坑,希望通过这篇能让大家避免走一些弯路,需要的朋友...

  • 那些年Android开发中遇到的坑

    使用DecorView作为PopupWindow的anchorView时,在华为P7中它是显示在系统状态栏下方的(Android 5.1.1系统),在华为3C,三星S4,红米Note2(5.0.2)上表现正常。 裁剪图片并且以bitmap返回时,不要调用系统的功能,...

  • Android内嵌Unity混合开发 + Unity与Android通信 + Touch的坑

    Android与Unity的混合开发

  • android开发要避免的那些坑

    SparseArray 目前有很多地方从性能优化方说使用SparseArray来替换hashMap,来节省内存,提高性能。 Linkify.addLinks() 这个类可以更方便的为文本添加超链接。 ThumbnailUtils 这个类主要是用来处理缩略图相关的,有...

  • 在IntelliJ IDEA 2020.1中配置Android开发环境踩过的坑

    前言 IDEA 2020.1终于发布了!(PS:等得花都谢了~ ) ...所以笔者只能一边参考网络上的教程,一边自己摸索,总算是在踩过无数的坑之后,把IDEA的Android开发环境给配置好了。(满脸都是心酸泪啊~ )

  • Delphi D10.X 在安卓APP开发中使用Jar包的注意事项

    写完上一篇博客《对于《关于使用Delphi XE10 进行android开发的一些总结》的补充》考虑了一下,应该把一些在开发安卓APP时使用到JAR包的注意事项也再讲一下。 请注意:这里是一些注意事项,或说“在开发过程中可能...

  • Android:如何优雅的开发马甲包?

    另外一方面是增加关键词的覆盖量,众所周知,单个APP只能有100个字符的关键词,多个APP就意味着可以覆盖N×100个字符的关键词,关键词覆盖越多,就意味着能够被更多的客户搜索到,有展现量,才有下载量,有下载量才...

  • Android开发自学笔记(六):声明权限和Activity

    不好意思哦,上一篇Android自学开发第六篇代码控制界面挖了个坑,如果运行不起来的同学,请注意查看本篇文章。 Android Project的灵魂大师AndroidManifest.xml终于要登场了,我们可以亲切的称呼它为AM文件,认识和...

  • Android开发之ApiCloud模块开发的注意事项

    经过本人多次模块制作打包上传基本总结模块开发的以下坑:     一.模块开发SDK最小版本必须为9,不然就算你SDK模块开发完毕正常运行你在后台云编译也无法通过会报错,提示 minSdkVersion9小于你模块里面的版本...

  • Android 低功耗蓝牙开发简述

    低功耗蓝牙是在传统蓝牙的基础上开发的,但它与传统模块不同。最大的特点是降低了成本和功耗。可以快速搜索并快速连接。它保持连接并以超低功耗传输数据,低功耗蓝牙是专门针对基于物联网(IoT)设备构建的功能和...

  • 游戏开发需要具备哪些技术?

    游戏开发需要具备哪些技术? 游戏开发基础要求高么? 和其他程序猿一样,要想做一名优秀的游戏开发者,底子不能差,算法,数据结构,语言等基础一个都不能少。当然,除了这些基本功外,还要对游戏有比较深入的...

  • 安卓开发——Android6.0动态权限申请步骤以及需要注意的一些坑

    因为工作需要,简单研究了一下Android6.0权限申请,在Google提供的sample的基础上,写了一个简单的demo。算是自己的笔记吧,可能会比较混乱,主要是方便以后查看。后期有别的问题,随时更新~ 本demo github下载地址...

  • Android中使用ShareSDK集成分享功能的实例代码

    其他集成分享技术我没有使用过,今天我就来介绍下使用ShareSDK来进行分享功能开发的一些基本步骤和注意点,帮助朋友们避免一些坑。好了,下面切入正题正式开始介绍。 1、ShareSDK开发包及配置 这个不用多说,去他们...

  • Android 开发技巧 开发常见问题归纳 需要注意的坑和解决方案

    13. EditText 中有个 android:digits="" 属性,用来自定义输入的字符类型,比如输入身份证只能是数字和x或者X 使用 android:digits="1234567890xX" 就轻松搞定了,不用再在代码里面进行蛋疼的校验了;...

  • 使用Jetpack组件Navigation实现Android开发中页面跳转

    目录一、前言1.概述2.导航图的创建(官网)二、基本使用1.依赖配置2.具体实例:使用Navigation实现...Android Jetpack的导航组件可以帮助实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,

  • Android Ble开发总结和遇到的坑

    硬件设备使用的都是低功耗蓝牙,讲真 BLE开发坑还是挺多的,废话不多说,进入正题。 二、注意事项: 1.判断是否支持BLE蓝牙、是否打开系统蓝牙 2.在一些高版本机型上, 用户还需打开位置信息(不光要位置权限,还需要...

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

  • 基于java的驾校收支管理可视化平台的开题报告.docx

    基于java的驾校收支管理可视化平台的开题报告

Global site tag (gtag.js) - Google Analytics