Android 开发中常见的注意点
这里总结了Android开发中常用的注意点。只有总结,没有展开举例讲解,展开的话,一个点都可以写一篇文章了。。。。。
这类问题都一定不要犯。
重要的事情说三遍!!!
说三遍!!!
遍!!!
资源
- 不允许出现 Receiver/AppOps/Cursor/Observer 资源泄露
- 使用 HandlerThread 要注意退出,否则导致 Thread 和 FD 泄露
- 不允许出现 global/local references 的 leak 问题
- 不要多线程调用通过 Binder 返回内容很大的系统接口
- 不要通过 Binder 传递超过 100K 以上的数据
- 尽量少注册高频回调监听器
ANR
- 耗时操作不要在 UI Thread 执行,防止 ANR 问题发生
- 应用进程间通信不要使用 broadcast 机制,避免 ANR
- 不要在 BroadcastReceiver 中 onReceive 函数启动 Thread 进行异步操作
- 不要在 onCreate 主线程启动的时候使用 Provider 数据库
- 尽量不要使用静态广播方式接收系统频繁发送的广播
Crash
- 针对无法保证部位 Null 的变量要进行非空判断
- 非 UI 线程不允许进行 UI 更新
- 不允许通过捕获 RuntimeException 类异常规避问题
- App 不要使用 setDefaultUncaughtExceptionHandler 方法注册私有异常处理函数
- 非 Thread Safe 的 list 并发场景下,遍历引发异常
- Parcel.marshal 不允许含有 binder object
- parcel.recycle 不允许重复调用多次
并发
- 正确使用对象的 wait / notify 同步函数,避免出现死锁等问题
- 不能使用 double check lock pattern
- Android 应用进程禁止通过 Fork 创建子线程
- System_Server 进程中尽量不要启动新的 Thread
- System_Server 进程中所有 UI 操作要在 UI Thread 上完成
Android 开发中常见的注意点的更多相关文章
- Android开发中常见的设计模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android开发中常见的设计模式
对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...
- Android开发中常见的内存泄露案例以及解决方法总结
1.单例模式引起的内存泄露 由于单例模式的静态特性,使得它的生命周期和我们的应用一样长,如果让单例无限制的持有Activity的强引用就会导致内存泄漏如错误代码示例: public class Use ...
- Android开发中常见的设计模式(一)——单例模式
首先了解一些单例模式的概念. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这样做有以下几个优点 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中. 保持 ...
- android开发中常见布局的注意点
常见布局的注意点 线性布局: 必须有一个布局方向 水平或者垂直 在垂直布局中 只有左对齐 右对齐 水平居中生效 在水平布局中 只有顶部对齐 底部对齐 垂直居中生效 权重:组件按比例分配屏幕的剩余部分( ...
- Android开发中常见的设计模式(二)——Builder模式
了解了单例模式,接下来介绍另一个常见的模式--Builder模式. 那么什么是Builder模式呢.通过搜索,会发现大部分网上的定义都是 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ...
- Android开发中常见的设计模式(四)——策略模式
策略模式定义了一些列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变换. 假设我们要出去旅游,而去旅游出行的方式有很多,有步行,有坐火车,有坐飞机等等 ...
- Android开发中常见的设计模式(三)——观察者模式
先看下这个模式的定义. 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新 先来讲几个情景. 情景1:有一种短信服务,比如天气预报服务,一旦你订阅 ...
- android开发中常犯的几个错误整理
新手程序猿,在开发中难免会犯各种各样的错误,以下是整理的一些android开发中常见的错误,一起来看看吧. 1.避免将多个类放在一个文件夹里面,除非是一次性使用的内部类. 就是一个文件,最好给分它同名 ...
随机推荐
- 【Android Developers Training】 28. 将用户带领到另一个应用
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- h5 新增的invalid事件,貌似有很大bug
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- bcp和load table
使用BCP和LOAD TABLE联合完成Sybase IQ 的数据导出和导入工作.说明: 表(视图)GN_TEST只有两个字段,TIMEID和MSISDN, 导出时我用'|'作为字段分隔符,'& ...
- springmvc的POST 请求转为 DELETE 或 put 请求配置HiddenHttpMethodFilter
1.web.xml里配置 <!-- 配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE ...
- English - Mosquitos
Smith's house is full of mosquitos. Every night they bite him. He can not sleep because the mosquito ...
- Watson Explorer Analytical Components 3 - use case scenarios
The followings are the user case scenarios that WEX can be used for generating value. 1.Customer Ins ...
- 使用Web页面配置ESP8266的参数
前言 使用Web页面配置ESP8266的参数相对于使用串口AT指令配置更加直观和简单.与配置路由器方式类似. 基本思路 基本思路是ESP8266工作AP模式下,作为TCP Server监听TCP Cl ...
- jsonp的原理和实现
什么是JSONP? javascript高级程序设计中是这样介绍jsonp的: jsonp是JSON with padding(填充式JSON或参数式JSON )的简写,是应用JSON的一种新方法,在 ...
- LInux基础命令分类
1. 命令的概念 命令的执行过程 系统第一次执行外部命令时Hash缓存表为空,系统会先从PTAH路径下寻找命令,找到后会将路径加入到Hasa缓存中,当再次执行此命令时会直接从Hash的路径下执行,如果 ...
- gtest 操作指南
首先,下载gtest-17.0,CSDN上就可以免费下载. 然后,打开gtest-17.0下的msvc文件夹,运行gtest.sln,右键解决方案,选择生成解决方案,此时会在gtest-17.0/ms ...