文/腾讯公司 陈江峰

优测小优有话说:

android开发的坑自然是不少,不想掉坑快来优测优社区~

6.Android APP开发中其它需要提醒的问题

android4.4在UI线程无法进行网络操作。

不单只android API版本不一定导致运行异常,有些机型还使用Java 1.5进行编译,使用某些Java 1.6的函数会Crash的。

注意OOM问题,目前android手机已经有3G内存了,但并非一个应用就能使用全部内存。了解一下堆内存,一个软件至少一个进程,一个进程跑一个虚拟机,进程使用的堆内存大小,每部手机不一定一样。

Show Dialog的问题,永远要判断Activity是否还在。

使用了高版本的API函数,在低版本机器上挂了。

非UI线程不能操作UI。

可能有各种权限被禁的问题。

没有浏览器、没有软件安装器、没有Email等发生ActivityNotFoundexception。

超快速连续点击按钮可能触发跑多个线程的问题。

Android4.4短信权限设置,原生系统带有新接口,第三方系统可能裁剪掉了。

7.什么情况下发生OOM,如何避免?

图片操作(图片缩放、bitmap生成等)、序列化反序列化数据等会消耗大量内存。合理使用数据结构(链表和数组),及时释放引用,使用弱引用等能降低OOM情况发生。

8.出现ANR怎么办?

如果Android程序某个操作执行等待超过5s,会出现ANR(Application Not Responding)的对话框,对于执行耗时的操作,譬如网络操作,就不能在主线程上进行了(Android 4.4不让你这样做了),这些任务应该跑在主线程外,譬如新建一个线程处理,或者自己写一个网络引擎对所有网络请求进行管理。

9.如何跟踪研发质量?

Coverity接入(RDM可以接入,还没接入的同学可以找huanling):代码缺陷扫描,不扫不知道,一扫吓一跳。满分推荐!

Crash是无法避免的,我们能做的是尽量把Crash的情况减少。发出去的版本,用户发生Crash了,我们需要把Crash数据收集起来。所以软件需要做一个Crash上报,汇总整理。统计每个版本的Crash率,并把Crash进行修复。

10.如果跟踪用户对产品的反馈?

不管你写软件所用的技术有多么牛B,用户是不知道的,也不关心的。用户关心的是你的产品体验到底有多牛B。加上用户可以轻松反馈的反馈功能,你会发现有时用户的idea还不错的。

做出来的产品好还是不好,需要有产品数据支撑,所以加插相关数据统计上报点,哪个功能热门,新增用户多少,活跃用户多少,一目了然。

11.安全检查

为避免异常情况的跳转或者恶意攻击,Android组件在启动时都需要判断传入的参数是否为空。

敏感信息需要进行权限限制或者加密处理。

能不暴露的组件就不暴露,在AndroidManifest中为组件加android:exported=”false”属性。

需要暴露的组件通过自定义权限进行调用,添加自定义权限android:permission=”yourapp.permission.CALL”

腾讯优测(utest.qq.com)是专业化的移动APP自动化测试工具,提供【兼容性测试】【云手机】【漏洞检测】【VIP定制化测试-优管家】等多维度测试服务,深受用户信赖。

腾讯优测-优社区干货精选 | android开发在路上:少去踩坑,多走捷径(下)的更多相关文章

  1. 腾讯优测-优社区干货精选 |  那些年,我们在Android机型适配上遇到的坑之Camera拍照时快门咔嚓声

    文/腾讯优测研发工程师 吴宇焕 优测小优有话说: android机型适配的坑自然是不少,不想掉坑快来优测优社区~ 现在Android手机一般都会带有照相功能,有很多朋友就发现手机照相时快门声音很响,想 ...

  2. 优测优社区干货精选|老司机乱谈编辑器之神——vim

    文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...

  3. 腾讯优测干货精选| 安卓开发新技能Get -常用必备小工具汇总

    文/腾讯公司 陈江峰 优测小优有话说: 移动研发及测试干货哪里找?腾讯优测-优社区你值得拥有~ 开发同学们都知道,安卓开发路上会碰到很多艰难险阻,一不小心就被KO.这时候,没有新技能傍身怎么行?今天我 ...

  4. 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密

    腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...

  5. 腾讯优测优分享 | 游戏的UI自动化测试可以这样开展

    腾讯优测是专业的自动化测试平台,提供自动化测试-全面兼容性测试,云真机-远程真机租用,漏洞分析等多维度的测试服务,让测试更简单! 对于目前的两大游戏引擎cocos-2dx.unity3D,其UI自动化 ...

  6. 腾讯优测优分享 | 这些年,我们追过的 fiddler

    腾讯优测是专业的移动云测试平台,提供全面兼容性测试,远程真机租用,漏洞分析等多维度的测试服务,旗下优分享提供大量的移动研发及测试相关的干货! 一.fiddler原理简介 fiddler是目前最强大最好 ...

  7. 腾讯优测优分享 | 探索react native首屏渲染最佳实践

    腾讯优测是专业的移动云测试平台,旗下的优分享不定时提供大量移动研发及测试相关的干货~ 此文主要与以下内容相关,希望对大家有帮助. react native给了我们使用javascript开发原生app ...

  8. 腾讯优测优分享 | Android适配中的一些特殊情况小结

    腾讯优测是专业的自动化测试平台,提供全面兼容适配测试,远程真机租用等多维度的测试服务! 作为一名"艰苦卓绝"的软件工程师,我在开发路上经常被各种奇葩情况虐的体无完肤...今天就想与 ...

  9. 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?

    腾讯优测是专业的移动自动化测试平台,提供多维度的自动化测试服务,让测试更简单! 近期有报道称,澳大利亚悉尼市新某大学的一名男生在课堂上看电影,不料耳机没有插好,变成了现场直播... 如果你认为耳机没插 ...

随机推荐

  1. Happy Number - LeetCode

    examination questions Write an algorithm to determine if a number is "happy". A happy numb ...

  2. python的class的__str__()和__repr__()函数

    repr(object) 返回一个可以用来表示对象的可打印字符串首先,尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地 ...

  3. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    原文:http://blog.csdn.net/mingxunzh/article/details/4627185 在JSP中的如果使用 "相对路径"  则有可能会出现问题. 因为 ...

  4. iOS开发 Apple Pay

    一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...

  5. HBase之集群状态

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.had ...

  6. win7文件夹图标中多了一把小锁打不开文件夹怎么办?

    win7文件夹图标中多了一把小锁打不开文件夹怎么办?解决办法一:右击目录→取得管理员权限!该方法适用于win7旗舰版.解决办法二:右击目录→属性→安全→高级→选择everyone→更改权限→勾上完全访 ...

  7. linux下打包命令的使用

    Unix系统业务使用(特别是数据管理与备份)中,经过一番研究.整理后,充分利用Unix系统本身的命令tar.cpio和compress等来做到打包和压缩,使之充当类似DOS下的压缩软件,同时在Unix ...

  8. javascript复习总结

    改变HTML内容:document.getElementById(id).innerHTML = new HTML; 改变HTML属性:document.getElementById(id).inne ...

  9. python——挖装饰器祖坟事件

    装饰器是什么呢? 我们先来打一个比方,我写了一个python的插件,提供给用户使用,但是在使用的过程中我添加了一些功能,可是又不希望用户改变调用的方式,那么该怎么办呢? 这个时候就用到了装饰器.装饰器 ...

  10. Octopus系列之UploadValues异步上载

    不多说了直接上代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "tex ...