随笔分类 - Android学习系列
Android开发相关的总结
摘要:##事件总线框架针对事件提供统一订阅,发布以达到组件间通信的解决方案。##原理观察者模式。##EventBus和Otto先看EventBus的官方定义:```Android optimized event bus that simplifies communication between Activ...
阅读全文
摘要:######11)Widget样式(Widget Style)特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值。```xml @android:style/Widget.AbsListView @android:sty...
阅读全文
摘要:使用android studio开发项目的一些问题,功能和技巧。####1. 环境Mac OSX 10.9.5 + Android Studio 0.8.9####2. gradle项目加载超慢这是因为gradle官方下载地址特别慢导致,解决方案有2个:* VPN,干净利索。 [推荐VPN...
阅读全文
摘要:####1. 环境UBUNTU 14.04 + Android Studio 0.8.2####2. 安装jdkopenjdk-7是一个很好的选择:```as3sudo apt-get updatesudo apt-get install openjdk-7-jdk```不排除你需要选择一个默认版本...
阅读全文
摘要:【基于最新的Android4.4的源码分析】每家公司或者每个移动团队无不想开发出一套自己的UI框架,融入自己的设计和特性,这必然会去修改android的ui。所以,学习和理解android的UI设计是最基础和非常有必要的。android ui设计最重要的就是主题和样式。1、位置在Android的fr...
阅读全文
摘要:前面多篇文章介绍到如何下载和编译Android或者CM源码,不过一直都是放在《拓展系列》里。随着学习的深入,android源码是非常有参考和学习价值,强烈推荐大家都去下载,编译,学习,所以把它提到《学习系列》专讲一章基础篇。刚装了UBUNTU14.04,所以尝试在新环境下编译一下android源码。...
阅读全文
摘要:接着《Android学习系列(36)--App调试内存泄露之Context篇(上)》继续分析。5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncTask等系统自带类去做事情,当然无可厚非。 但是AsyncTask确实需要额外注意一下。它的泄露原理和前面Handler,Thread泄露的原理差不多,它的生命周期和Activity不一定一致。 解决方案是:在activity退出的时候,终止AsyncTask中的后台任务。 但是,问题是如何终止? AsyncTask提供了对应的API:public final boolean cancel (bo...
阅读全文
摘要:Context作为最基本的上下文,承载着Activity,Service等最基本组件。当有对象引用到Activity,并不能被回收释放,必将造成大范围的对象无法被回收释放,进而造成内存泄漏。下面针对一些常用场景逐一分析。1. CallBack对象的引用 先看一段代码:@Overrideprotectedvoid onCreate(Bundle state){ super.onCreate(state); TextView label =new TextView(this); label.setText("Leaks are bad"); setContentView(lab
阅读全文
摘要:当前比较成熟一点的应用基本上都会在进入应用之显示一个启动界面.这个启动界面或简单,或复杂,或简陋,或华丽,用意不同,风格也不同.下面来观摩几个流行的应用的启动界面.1. 货比三家以腾讯qq,新浪weibo,UC浏览器,游戏神庙逃亡等7个应用为例,比比看:(我认为最精美的界面应该是qq2012,虽然只有一张图,基本的应用名称,版本,图标这些信息都有,但是看着舒服,觉得美.)2. 元素启动界面的本意是以友好用户界面来掩饰后台缓冲加载,让用户用平和等待的心情进入正常应用界面.但是因为启动界面是放在开始,在这个特殊的点上,可以做更多的事情,如应用宣传,显示版权,展示广告等等.所以,这个启动界面的元素,
阅读全文
摘要:Android的广告平台是很多的,各市场对各平台的接受程度是不一样的,Android的开发者如果想集成广告基本要考虑下面两个问题:(1)集成什么广告,会赚钱?(2)集成什么广告,不会被市场拒绝?最终的结果往往是折中的。第一个问题是广告平台的判断问题,我没有发言权去评论,本文主要是针对第二个问题展开。解决方案就是打包应用的不同广告平台版本,本文接下来逐一展开相关话题。1. 基础本文其实是针对《Android学习系列(6)--App模块化及工程扩展》和《Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包》的一个扩展和应用场景。所以当然也需要这两篇文章的基础:(1). An
阅读全文
摘要:最近在工作中处理了一些内存泄露的问题,在这个过程中我尤其发现了一些基本的问题反而忽略导致内存泄露,比如静态变量,cursor关闭,流关闭,线程,定时器,反注册,bitmap等等,我稍微统计并总结了一下,当然了,这些问题这么说起来比较笼统,接下来我会根据问题,把一些实例代码贴出来,一步一步分析,在具体的场景下,用行之有效的方法,找出泄露的根本原因,并给出解决方案。 现在,就从cursor关闭的问题开始把,谁都知道cursor要关闭,但是往往相反,人们却常常忘记关闭,因为真正的应用场景可能并非理想化的简单。1. 理想化的cursor关闭// Sample CodeCursor cursor ...
阅读全文
摘要:随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈。 经过不断的尝试,在ubuntu环境下,以花界为例,我将一步一步演示如何使用命令行,使用ant编译android项目,打包多渠道APK。 要点: (1). 编译android的命令使用 (2). ant基本应用 (3). 多项目如何编译(包含android library) (4). 如何多渠道打包 ps:我将以最原始的方式来实现,而不是使用android自带的ant编译方式,并尽量详细解释,这样有益于...
阅读全文
摘要:Android的ListView是应用最广的一个组件,功能强大,扩展性灵活(不局限于ListView本身一个类),前面的文章有介绍分组,拖拽,3D立体,游标,圆角,而今天我们要介绍的是另外一个扩展ListView:下拉刷新的ListView。 下拉刷新界面最初流行于iphone应用界面,如图: 然后在Android中也逐渐被应用,比如微博,资讯类。 所以,今天要实现的结果应该也是类似的,先贴出最终完成效果,如下图,接下来我们一步一步实现。1. 流程分析 下拉刷新最主要的流程是: (1). 下拉,显示提示头部界面(HeaderView),这个过程提示用户"下拉刷新" (2).
阅读全文
摘要:在Android的应用开发中,我们会用到各种代码调试;其实在Android的开发之后,我们可能会碰到一些随机的问题,如cpu过高,内存泄露等,我们无法简单的进行代码调试,我们需要一个系统日志等等,下面我把握工作中碰到的几个常用命令和方法给大家演示实践一下。1.logcat命令这个命令最简单常用,可查看帮助,我不多说,如果需要打印时间,加参数-v timeadb logcat -v time 2.bugreport命令这个命令也非常简单,但是在实际应用中非常有用,会有从开机之后详细的dumpsys,dumpstate和logcat信息,是一份完整的日志记录。对分析用户行为,异常信息,系统状态有很
阅读全文
摘要:手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统互联网将会大放光彩的一个功能。人人有手机,人人携带手机,花钱买东西,不再需要取钱付现,不再需要回家上网银,想买什么,扫描一下,或者搜索一下,然后下单,不找零,直接送到你家,这将是手机支付给我们带来的全新交易体验。谷歌刚推...
阅读全文
摘要:CV一族,应该很容易理解原型模式的原理,复制,粘贴完后看具体情况是否修改,其实这就是原型模式。从java的角度看,一般使用原型模式有个明显的特点,就是实现cloneable的clone()方法。原型模式,能快速克隆出一个与已经存在对象类似的另外一个我们想要的新对象。1.意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。热门词汇:克隆 深拷贝 浅拷贝2.结构图和代码它的结构图非常简单,我们以Intent为例子:Intent的clone方法非常简单: @Override public Object clone() { return new Intent(...
阅读全文
摘要:对于android开发者来说起,适配器模式简直太熟悉不过,有很多应用可以说是天天在直接或者间接的用到适配器模式,比如ListView。ListView用于显示列表数据,但是作为列表数据集合有很多形式,有Array,有Cursor,我们需要对应的适配器作为桥梁,处理相应的数据(并能形成ListView所需要的视图)。正是因为定义了这些适配器接口和适配器类,才能使我们的数据简单灵活而又正确的显示到了adapterview的实现类上。适配器模式,Adapter Pattern,勇敢的去适配,大量的资源可以重用。1.意图适配器模式,把一个类的接口变换成客户端所期待的另一种接口,从而使原本不匹配而无法在
阅读全文
摘要:无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户。Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛般的移动网速,与服务器的数据交互是能少则少,这样用户体验才更好,这也是我们有时舍弃webview而采用json传输数据的原因之一。采用缓存,可以进一步大大缓解数据交互的压力,特此,我们简略列举一下缓存管理的适用环境:1. 提供网络服务的应用2. 数据更新不需要实时更新,但是哪怕是3-5分钟的延迟也是可以采用缓存机制。3. 缓存的过期时间是可以接受的(不会因为缓存带来的好处,导致某些数据因为更新不及时
阅读全文
摘要:最近经常思考团队开发的一些东西,其中代码风格不统一是最常见的问题之一。按理说,大家协商和沟通一下,风格统一一下就可以了,其实不然,因为这是个个性张扬的时代!工作code review中用了CheckStyle小半年了,觉得很好很强大很方便,大家写出来的代码就像一个人写出来的一样,值此辞旧迎新,特简做说明,与尔同飨。1.简介官方网站:http://checkstyle.sourceforge.net/CheckStyle提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。CheckStyle检验的主要内容(1)
阅读全文
摘要:本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜。上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快,不如用图片来的惊艳和迅速,又懒的去改原来的,所以我又用图片来实现一个更完美的效果。1. 准备您可能需要参考我之前的两篇文章:(1).Android学习系列(16)--App列表之圆角ListView(2).Android学习系列(4)--A
阅读全文