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

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

文/腾讯公司 陈江峰

优测小优有话说:

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定制化测试-优管家】等多维度测试服务,深受用户信赖。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108940.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm修改编码格式_pycharm代码风格

    pycharm修改编码格式_pycharm代码风格本文转自:pycharm自动调整代码格式问题在使用pycharm的代码编辑器时,常常懒得写空格,如下图,但这是不符合代码规范的,而且也会影响可读性。解决方法pycharm有自动调整代码格式的快捷键,默认为Alt+Ctrl+L,按下快捷键后,代码自动填充了空格。…

    2022年8月25日
    3
  • PS日记一

    PS日记一

    2021年8月25日
    51
  • sed替换最后一个匹配_ppt占位符设置

    sed替换最后一个匹配_ppt占位符设置json字符串处理

    2022年9月7日
    0
  • createprocess error=2_CreateProcess

    createprocess error=2_CreateProcessOpenProcess函数声明如下,失败则返回NULL(0,也就是false)#include<Windows.h>HANDLEOpenProcess(DWORDdesiredAccess,//读取权限BOOLblnheritHandle,//是否继承DWORDprocessId//想要读取的PID)代码示例,注意下面的代码可能运行失败,请按照如下设置VS右键项目名(例如ConsoleApplication123)->属性->配置属性(注意左上角是活动D

    2022年9月12日
    0
  • Oracle数据库备份与还原

    Oracle数据库备份与还原Oracle数据库备份与还原一、逻辑备份1.某一用户(DBA权限)全库备份:2.某一用户(DBA权限)备份库中某些用户:3.某一用户备份自身:4.某一用户备份自身某些表对象:5.某一用户(具有DBA权限)备份其他用户某些表对象:二、逻辑还原1.使用全库备份文件还原:①使用全库备份文件还原库:②使用全库备份文件还原库内某些用户(被还原用户应存在):③使用全库备份文件还原库内某些用户某些表:2.使用某些用户备份文件还原:①使用某些用户备份文件还原库内某些用户(被还原用户应存在):②使用某些用户备份文件还原库内某

    2022年7月12日
    16
  • ViewStub使用[通俗易懂]

    ViewStub使用[通俗易懂]一、ViewStub是什么?<ViewStub>标签实质上是一个宽高都为0的不可见的轻量级View。通过延迟按需加载布局的方式提升页面加载速度。二、ViewStub使用场景某布局默认是不可见,当满足特定场景才显示。比如网络异常提示、引导页等。三、ViewStub怎么使用?1、创建布局文件layout_test.xml(注:根标签可以是布局或控件,但不能为<merge>,子标签可以使用<merge>)<TextView…

    2022年6月28日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号