伊豆:把豆瓣网装进口袋

原创  伊豆:把豆瓣网装进口袋收藏

<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "/r/n/n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } </script> <script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

                     ——eoeMobile团队开发豆瓣网Android客户端全记录

编者按: 2009年,移动基础设施走向成熟,各种技术百花齐放,各种应用应运而生。正因如此,本刊新设移动专栏,希望为 相关应用开发者提供专门的园地。如果您或您身边的朋友,正在为移动应用而努力,《程序员》将为您提供展示的空间与平台。欢迎与本刊联系 editor@csdn.net。

随着三大电信运营商真正开始力推3G业务,国内围绕着3G已经出现一股创业潮,3G上网卡、手机搜索、手机广告、手机电影、手机杂志等,从硬件到软 件再到服务,都成为创业者瞄准的目标。3G对用户来说,可能意味着更快的速度、更多的应用、更丰富的内容。而这些3G时代的用户需求,对于那些有志于在无 线网络应用领域有所作为的人来说,无疑意味着绝好的创业机遇。

eoeMobile团队正是这其中的一员。由于看好移动互联网和Android手机平台的商业前景,同时也拥有专业而独特的产品、技术服务能力,我们聚集了一群热爱Android的技术英才,组建了eoeMobile团队。

看好并选择Android的理由非常简单,也非常正常。和让人烦躁的Symbian证书认证不同,和利欲熏心要靠系统赚钱的微软也不同,和只顾自己 玩得爽不管开发者死活的iPhone更不同。Android是免费的,就像免费啤酒一样;Android是开源的,其遵循Apache License 开源协议。因为免费,其获得大量的厂商和用户,因为开源,我们可以放心以后不会像某系统一样出现多少漏洞,同时因为开源和在网上提供的简单易用的SDK工 具包。

你可以想像以后会有多少应用软件将会出现在Android手机之上吗?你或许已经在感慨苹果提供的大量应用程序和其神话般的10亿下载量,这其实没 什么值得炫耀的,Android带来的不仅仅是一个手机操作系统,而是一个强大的第三方开发者社区和一条完整的商业模式,而现在,还只是刚刚起步,在 Android手机之上将获得无限的可能,早踏入这个领域半步,领先其他人的就不止一点点。

团队成立伊始,我们分析外界大环境,综合考虑团队的技术和市场资源,策划并实现了一些在互联网上较为成功的案例的手机客户端。而这些应用中,首当其冲的便是豆瓣网的Android客户端——伊豆的开发案例。

创意过程

团队成立之初,成员通过头脑风暴和思维发散,将国内外成功的互联网案例都进行了梳理和讨论,诸如国内的豆瓣网、友播音乐网、微博饭否网、twitter、last.fm等网站都是我们考察讨论的目标。

之后,我们站在不同的角度审视并分析问题,比如站在技术的角度评估实现的难度和周期,站在用户的角度揣摩使用的场景和需求,站在网站的角度考虑客户 端的功用和价值,还会结合国内外大环境和政策原因等,全方面的进行分析和构思,最后选定需要实现的案例。其中,豆瓣网客户端最早通过我们的测评,正式纳入 日常工作,其英文名字是eoeDouban,我们给它起了一个很好的中文名字——伊豆。

需求分析,市场调查

伊豆的产生,并非只是闭门造车的创意。在开发伊豆的时候,团队做过详细的用户调查。我们通过豆瓣的邮件工具给100位用户发邮件来询问他们最近常用 的功能。可喜的是我们最后收到了61封用户的回执邮件。在这些邮件中我们对用户的需要的功能做了统计。用户的需求可谓是多种多样,大家恨不得将豆瓣所有的 功能都能实现。为了尽快给用户一个直接的体验,同时也为了遵从我们快速建设原型的敏捷开发原则,我们在第一版选择实现了最常用的三个功能,分别是:

● 用户登录

● 获取"友邻广播"

● 发送“我说”

这些功能有点类似于国外的Twitter或者国内的饭否。

伊豆1 图1 友邻广播显示界面

兵马未动,设计现行

在确定我们将要开发的功能之后,eoeMobile伊豆开发小组的三人马上进行了头脑风暴和纸上快速原型。我们鼓励每个人都提出自己的方案和想法, 然后用最短的时间集体讨论,最后达成共识。经过一个小时的集体讨论,我们不但制定出了豆瓣客户端的用户交互逻辑,并且在两张A4纸上画出了豆瓣客户端的原 型。原型包括一下几个内容:

● 用户操作与页面跳转逻辑

● 功能在界面上的表现

● 基本的布局和UI设计

伊豆2 图2 设置页面

程序主要包括四个界面。第一个界面是欢迎界面,在欢迎界面上提示用户如何进行下一步的操作。由于采用的是oauth授权协议,所有的授权操作是在 Android的浏览器中进行的。在进行授权成功后页面从浏览器跳回到伊豆应用,应用开始获取用户的好友信息并开始下载友邻信息,当获取完这些信息后进入 友邻广播显示界面。在这个界面中当用户按下Menu键的时候会弹出四个选项,如图一所示,分别为更新、设置、帮助和退出。当用户点击设置后,程序进入第三 个界面-设置界面。在这个界面当中用户可以设置是否开机启动,是否开启自动更新,以及开启自动更新的频率。另外由于在真实手机上手机的内存一般比较吃紧, 所以我们对本地缓存的数据也做了限制,用户可以选择数据存储的条数,分别为50条、100条、200条、300条等。第四个界面为帮助界面,在这个界面主 要告诉用户一些帮助信息,如当前应用的版本号和技术支持等。

功能制定好,并且实现了原型后,设计人员就可以和开发人员并行工作。负责豆瓣客户端的设计人员负责原型的完善,和程序中所使用的图片制作。两位开发人员负责后续的技术实现。

应用技术架构和实现

● 开发前的准备

eoeMobile的开发团队并没有强制规定开发者开发的环境,在Windows或者Ubuntu环境下都可以进行开发,关键看开发者对哪个环境更 加熟悉和喜爱。开发工具为大家熟悉的Eclipse工具。应该说,搭建开发环境是比较简单的,如果已经配置好Eclipse开发传统Java的开发环境的 话,只需要安装插件ADT,并且在Eclipse里边配置SDK的位置即可,这里不再赘述。大家可以参照我们的Android开发社区 http://www.eoeandroid.com,在这里可以查阅到大量的相关资料。

● 写代码前的程序架构

麻雀虽小,五脏俱全。在eoeMobile团队内部我们极力反对没有经过详细思考和架构的程序编码。我们推崇先用总实现时间的五分之一来进行程序的 架构和设计。也就是说,如果程序是10天可以全部实现,那我们会用1-2天的时间进行架构和设计。我们的开发经验表明,只有经过充分的开发前设计,最后的 重构工作量才会最少。重构和返工是无法避免的,但是良好的开发习惯和流程可以减少重构和返工的时间成本。

伊豆3 图3 程序的结构和设计图

程序在UI和功能上主要实现了登录授权,获取“友邻信息”以及发送“我说”三个功能,在数据层主要支持对用户好友信息、友邻广播信息的离线存储。其 中为了节省内存空间,我们把占用内存大的用户头像保存在了容量很大的SD card上。后台服务运行着程序的独立线程,如果用户开启了定时更新功能的话,那么这个线程负责定时更新用户的友邻广播信息。从用户的友好性方面考虑,我 们在程序当中也增加了事件监听的机制,比如开机启动的机制、探测到Wifi开启后的第一时间更新服务器端数据的机制。当然所有的这些都是用户自己可以设置 的,我们特别反对程序在用户不知情的情况下去执行一些类似于更新的操作。

代码实现

当有了原型设计和技术设计后,代码的实现就比较容易了。eoeMobile的伊豆开发小组用了不到两周的时间就完成了代码的编程。由于国内 Android学习的相关资料太少。在这之间遇到问题我们都是不断的Google,不断的去国外的开发者论坛上交流。在开发的过程中,我们深知国内资源的 匮乏和交流的不便,于是在开发结束后我们成立了eoeAndroid开发社区,希望能给国内开发者的学习和交流带来便利。关于程序的源码,不久就会放到社 区供大家免费现在,另外大家亦可在eoeMobile团队依照自身实际开发经验写成的《Google Android 开发入门与实战》一书中获得。

在程序开发中,用户友好性是我们非常注重的一点。因为开发出来的程序最终面对的是我们的用户,所以我们努力在用户友好性方面做到最好。但是手机设备 终究在性能方面离PC设备很远,在程序开发过程当中我们面临的最大的用户友好性的问题是由于网络的带宽问题和本身手机存储和运算速度慢而引起的程序阻塞和 等待。面对这个问题我们想了很多办法,经过多次试验我们最终采用多线程的机制来解决这个问题,也就是遇到有网络延时或者操作需要大量CPU处理时间的操作 我们都会把它放到一个单独的线程当中,当这个线程操作完毕,然后通知UI线程对界面进行改变,比如弹出对话框,或者在标题栏地方给用户提示。在应用中我们 多处都用了多线程的开发技巧,比如点击更新按钮后开始执行下边的线程:

private class ThreadUpdateSaying extends Thread {

public void run() {

int num=doubanDataUtil.updateSayingDb();

updating = false;

if(num>0){

//进行刷新并且改变下载状态

mHandler.post(new Runnable() {

public void run() {

LogUtil.i(this, "update finished, render UI");

renderListView();

setTitle("友邻广播");

setProgressBarIndeterminateVisibility(false);

}

});

}

}

}

首先获取最新的友邻广播信息,如果有新的友邻广播的话,将新的友邻广播存储到本地的数据库当中,并且在存储完毕后利用renderListView()函数对页面进行刷新。

精心测试,迅速发布

eoeMobile团队崇尚精心测试,迅速发布。这个怎么理解呢?对于测试我们团队内部制定了严格的测试流程。首先在代码级别会对核心的代码和函数 进行单元测试,我们努力保证单元测试覆盖足够大的范围。在进行完白盒测试后,我们会从功能的角度和用户使用的角度,由其他项目组来进行黑盒测试。在测试完 毕并且修复bug后,我们会马上进行的发布。目前伊豆发布在两个地方,一个是Google Market,一个是eoeandroid.com社区的伊豆专版。在产品的后续完善方面,eoeMobile团队重视用户反馈。只有不断地收集、研究用 户反馈,我们的产品才会做得越来越好。我们的价值观是用户第一,在资源许可的情况下满足最多用户的需求。

迭代开发,版本记录:

在快速实现伊豆的0.5版本后,我们开始收集和研究用户反馈,用了一周多的时间实现了伊豆的1.0版本。eoeMobile团队的人员都信奉的原则 是,不做最全面的,只做对用户最有用的。所以我们每一版都是用最快的速度实现用户最需要的功能。伊豆的2.0版本已经开始策划当中,目前还在收集用户的需 求,当然我们也希望豆瓣网能给我们团队提供一些用户的需求,这样我们就可以快速进入实现的过程当中。

eoeMobile的其他应用介绍

作为国内最早一批从事Android开发的专业团队,eoeMobile已经实现了一批应用,如:

● eoeDakar 开车游戏

● eoeInstaller apk安装器

● eoeApps 手机管理系统

● eoeAssistant 手机助手

● eoeCaiGuoqi 猜国旗游戏

● eoeJingZiQi 井字棋游戏

● eoeTwitter 著名网站Twitter的客户端

● eoeWheather 天气预报

● eoeItrack GPS定位软件

eoeMobile希望可以致力于帮助中小型的Web 2.0和内容型网站将传统的互联网服务推广到移动互联网,这样一方面解决中小型网站向迁移移动互联过程当中技术和资金投入太大的问题,另外一方面能给用户 带来更好的服务。从真正的意义上推动中国移动互联网的发展,加速中国传统网站踏入移动互联的步伐。

作者简介:

靳岩,北京邮电大学计算机科学与技术专业毕业,手机行业软件开发多年经验,曾经参与过易路联动公司基于MTK解决方案的Framework项目。有 丰富的手机客户端开发经验,从事Android研究与开发一年时间,著有大陆第一本Android原创开发教程:《Google Android开发入门与实战》;并为eoeMobile团队负责人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值