高效 android APP 开发总结(4月29号更新版)
文章平均质量分 64
码农小舍
欢迎关注我的公众号——小舍,有更多有趣的内容哦~
展开
-
该用MVC/MVP吗——房子不需要盖成一样
业内的很多 android 大牛们为了这个问题没少念念碎,对于 android 中使用了何种架构,一种很流行的说法是使用了 MVC ,具体来说: Model:你的业务逻辑,这个基本没什么争议;View:lyout and resources xmls、以及程序中定义的各种View的子类;Controller:activities 此法一出立即引来众多骨灰级大牛的吐槽!很多人原创 2013-04-29 17:14:44 · 1547 阅读 · 2 评论 -
应用应该尽可能省电——可持续发展的重要性
智能手机的续航能力一直是一个令用户头疼的问题。作为 android APP 的开发者,我们无法去纠正操作系统本身的设计缺陷,但是应尽可能让我们的 APP 本身不要做太多的无用功来浪费宝贵的电能。 1 监测电量和充电状态 如果你的 APP 在后台需要进行事务更新,那么更新的频率必须是一个值得慎重思考的问题,如果持续更新而不加限制,那无疑会加速电量消耗,而且也是不必要的。当你需翻译 2013-04-29 18:20:20 · 883 阅读 · 0 评论 -
LruCache 结合 FIFO 策略实现bitmap缓存
private final int hardCachedSize = 2*1024*1024; private final LruCache sHardBitmapCache = new LruCache(hardCachedSize){ @Override public int sizeOf(String key, Bitmap value){ r转载 2013-04-29 18:36:19 · 1489 阅读 · 0 评论 -
Multithreading For Performance
转载自:http://android-developers.blogspot.com/2010/07/multithreading-for-performance.htmlA good practice in creating responsive applications is to make sure your main UI thread does the minimum转载 2013-04-29 18:30:42 · 1040 阅读 · 0 评论 -
在后台线程中执行数据库查询
不可否认,从外存中读取数据相对直接从内存读取是耗时的,尤其是批量从数据库中加载数据时,如果直接在 UI 线程中完成,轻则导致界面延迟加载,严重时可导致 ANR。本章又一次重申了在后台线程中执行耗时工作的重要性。 在这里,大家只要认识到:从数据库中进行批量查询应该总是放在后台线程执行。 异步查询机制有 CursorLoader 和 AsyncQueryHadler,本章翻译 2013-04-29 18:16:05 · 1415 阅读 · 0 评论 -
性能小诀窍——波斯沃斯决战的小失误,大毁灭
从本篇开始一直到 “ 如何避免 ANR”, 我们介绍 AndroidDeveloper Practices for Performance,我尽量用最精简易懂的方式将这些精要原则呈现给大家,详细的说明还请参考原文档: http://developer.android.com/training/best-performance.html 先讲个故事轻松一下: 公元15世纪英国翻译 2013-04-29 18:08:19 · 1177 阅读 · 0 评论 -
新建你的packages——学会切蛋糕
朋友过生日请你帮TA分蛋糕,在座的有年轻人、小孩、老人、男人、女人,你会怎么分?有以下几个选择: 1. 不要分了,把整个蛋糕分给大家;2. 平均分配,每人吃一样多;3. 按照各类人群的食量和爱好合理分配。显然,第三种方法最佳! 我们在开发一款APP之前需要建立好你的packages,如果整个程序开发下来只有一个package,同时开发的模块和功能又多,原创 2013-04-29 17:11:57 · 1103 阅读 · 0 评论 -
在列表中控制 AsyncTask 加载 bitmap 的时机
//滑动控制 private OnScrollListener mScrollListener=new OnScrollListener(){ @Override public void onScrollStateChanged(AbsListView view,int scrollState){ if(scrollState==OnScrollListener.SCROLL_ST原创 2013-04-29 18:41:26 · 1158 阅读 · 2 评论 -
如何避免 ANR
ANR(Application Not Responding)错误在以下两种情况下发生: l 界面在5秒内没有响应用户的输入事件;l BroadcastReceiver 在10秒内没有完成所负责的工作。 相关建议: 1. 在 UI 线程中做尽可能少的工作; 2. 在 Activity 的 onCreate 和 onResume 中做尽可能少的工作;翻译 2013-04-29 18:25:35 · 894 阅读 · 0 评论 -
使用多线程处理耗时工作
大家对多线程处理耗时工作的重要性应该早已认识到。本章的关键点是:把耗时的、与UI渲染无关的操作进行分割分配到多个线程中并发执行。 在本章,googler 全篇介绍了通过 java 线程池来构造多线程执行环境的详细流程,关键要点如下: 1. 定义一个能在 Thread 中执行的 Runnable 子类 SubRunnable,把耗时的工作交给 SubRunnable翻译 2013-04-29 18:24:13 · 2479 阅读 · 0 评论 -
使用后台服务 IntentService
Service 和 Activity 属于同一级别的应用组件,默认情况下它运行在宿主进程的主线程中,因此,不要因为 Service 没有运行在前台,就误以为它可以毫无条件地执行耗时工作(CPU intensive work),否则将导致 ANR。 而 IntentService 却是个例外,它开辟了一个后台工作线程来执行耗时工作,你可以将离线的耗时工作委托给 IntentSe翻译 2013-04-29 18:14:53 · 845 阅读 · 0 评论 -
高效使用 Layout
1 优化 Layout 层次看了前面很多高效开发 android 的方法,你恐怕很难注意到,滥用 layout 的后果有多严重。在你的应用中加入的任何一个 widget 和 layout 都需要进行初始化、布局和渲染。比如,嵌套的 LinearLayout 会导致过度的 View 分层,而使用了layout_weight 的嵌套LinearLayout 将导致其所有子元素被重复测量两次。翻译 2013-04-29 18:13:25 · 864 阅读 · 0 评论 -
节省你的内存
我刚开始接触手机开发的时候,一昧地认为让程序跑的越快就越好,完全忽略内存是否够不够用,而事实上,手机的CPU速度总是比我们想象的要快,而内存的容量总是比我们想象的要少。忽略内存的使用情况有时候好比一条贪吃的蟒蛇,企图一次吞下大象;有时候好比消化系统出现了问题,只进不出,俗称“BM”。 在 android 开发中这两种情况都有可能发生,当我们批量加载图片时,有可能因为同时写入内存的字节过多,原创 2013-04-29 17:49:03 · 1894 阅读 · 0 评论