Android 项目开发 基于Web Service 服务的中英翻译软件(四)使用Sqlite “辅助” Web Service
罗嗦
从Android手机诞生并且大踏步的迈向商业领域的开始,就吸引了无数智能终端发烧友与开发者,博主就是这个群体中的成员之一(虽然还很菜,但却一直保持着这份热情)。就像博主一样,能拥有一台属于自己的爱机是多么幸福的一件事情(公司的不算)~,于是乎经过了2个星期的“市场调研”,决定勇闯中关村!经过几番周折终于拿到了自己心仪的机子,并且第一时间开通了3G业务,相信所有拿到智能机的朋友第一件事情就是要安装上几款NB且酷的软件。一来是庆贺自己终于赶上了科技的步伐,二来也要看一下这无线网络的上网功能,那么随之而来的“烦恼”也就出现了。就博主来说,博主办的3G业务每月有300M的流量可以使用,超出要另外算钱。大家都知道,因为无线上网与PC上网的付费方式是不同的,PC网包年、包月也好,都是不计流量的,而无线就不同了。虽然安装了一些主流的流量统计软件实时监控自己的流量支出,但这个心里还是不放心,总觉的某些软件的某些操作是不是“必要”的,是不是某些软件为了赚取流量或者点击率而没有为用户节省开销呢?
从用户的角度思考问题——如何减少用户流量的开销?
在设计这款软件时,我就为“查询”(翻译,显示例句,显示单词本,语音等……)操作提供了两种获取数据的方案。
第一种方案:
访问Web Service,因为是居于调用Web Service的软件,访问互联网是必不可少的,上面前言提到,访问互联网的频率与次数和流量支出有着重要的联系,同样也会牵动消费者的神经与用户体验,所以在设计软件的时候要加设一个“仓库”(Sqlite),用来存储用户从互联网获取到的信息,当用户下次访问互联网时,首先访问数据库中有没有相对应的信息,如果有,那么直接访问数据库,如果没有才会去访问互联网,通过这种方式,无形中可以为用户省去很多的流量开销。
第二种方案:
此方案与第一种没有任何冲突,他们是同时存在的。还是从用户的角度去考虑问题。”查询”操作可以翻译单词,显示出翻译过后的文字和音标(拼音),同时中英翻译服务还提供了“例句”供开发者使用,还有单词的语音发音,还有中文的国际码,偏旁部首,笔画等。虽然提供的内容很丰富,但是这些都是用户想要的吗?首先看一下中英双向翻译服务为我们提供的文档中对一个方法的描述:
这个名为Translator的方法,可厉害啦,为什么这么说,因为他是此服务提供的方法中的“鼻祖”,它返回了所有的信息,比如我要翻译work这个英文单词,当使用Translator方法后,我会得到3个DataTable,DataTable0是关于word单词的一些基本信息,比如音标,如果是中文会有国标码,还有对word的翻译,还有发音的Mp3文件名,好吧,我承认DataTble0中这些数据可以说是必要的,但看一下DataTable1和DataTable2,相关词条,例句,像这些“额外信息”并不算是必要的,但却是有需求的。把这些额外信息提供显示给用户会让他们觉得软件的功能丰富,但只能作为后备。等用户感兴趣的时候再去显示,这样一来会为不感兴趣的用户节省了这部分“额外数据”所带来的流量支出。那就不能直接使用Translator,通过查看文档,发现中英翻译服务还为大家提供了3个方法,他们将Transltor分解了:
TranslatorString:返回的内容与上面的DataTable0中的内容一直,是一个String[]
TranslatorReferString:相关词条。
TranslatorSentenceString:例句。
当我点击查询按钮时,我只会执行TranslatorString方法,并且将结果显示同时执行保存的数据库操作,这个时候如果用户想使用发音功能,才会执行GetMp3方法获取byte[],当用户想查看例句,才会执行TranslatorSentenceString方法,并且将结果显示同时执行保存的数据库操作,这样“分开”访问互联网,对流量的开销得到了很好的控制,而不是一次全部将这些信息获取到,造成不必要的浪费。(上图中音标有乱码,我会再后面讲解乱码的问题)
当我提到如何节省流量开销,大家会以为我会为大家提供什么好的技术,其实不是,我想说的是:多用心,多为用户考虑才会做出好的软件,技术只是工具,只是辅助。
下一篇:Sqlite使用中出现的一些“小问题”,和编码。