Eclipse开发Android应用程序入门:重装上阵

Eclipse开发Android应用程序入门:重装上阵

翻译:赵锟
原文:http://www.smashingmagazine.com/2011/03/28/get-started-developing-for-android-with-eclipse-reloaded/

在我们教程系列的第一部分中,我们使用Android和Eclipse开发了一个简单的饮茶计时器的应用程序。在第二部分,我们将继续开发这个程序,并给它增加一些其他的额外的功能。在开发的过程中,我们将给你介绍更多重要而强大的Android SDK特性,包括持久化数据存储,Activity和Intent,和共享用户首选项(译者注:类似于windows 的注册表的一种机制)。

跟着本教程,你需要上一篇教程中的代码,如果你想直接使用代码,你可以使用如下的指令从GitHub上check out出tutorial_par_1标记的代码:


[code]
$ git clone git://github.com/cblunt/BrewClock.git
$ cd BrewClock
$ git checkout tutorial_part_1
[/code]

在GitHub中检出了代码后,你需要将代码倒入到Eclipse中的项目中:

  1. 运行 Eclipse 选择 File → Import…
  2. 在导入窗口, 选择 “Existing Projects into Workspace”并点击 “Next.”
  3. 在下一屏,点击 “Browse,”选择你从GitHub上clone出的代码目录。
  4. 点击“Finish” 将项目导入到Eclipse中。


在导入项目到Eclipse之后,你有可能会看到有如下的警告信息:
[code]
Android required .class compatibility set to 5.0.
Please fix project properties.
[/code]
如果有这种情况,右键点击“Project Explorer ”中新导入的BrewClock项目,并选择 “Fix Project Properties,” 并重启Eclipse。

数据持久化入门

当前,BrewClock 让用户为他们泡的茶设置一个定时器。这个非常棒的一个工作,但是如果对于不同的茶使用同一个泡茶时间的结果会怎样呢,是不每种茶都应该有自己的一个泡茶时间呢?如果这样,那岂不是所有的用户都需要记下每一类茶所需要泡的时间!这不是一个很好的用户体验。因此,在这篇教程中,我将新增一个功能来为用户每种不同的茶叶存放一个泡茶时间,并当用户想泡茶的时候,可以从茶叶列表中进行选择。

为了实现这个目的,我们得利用Android的丰富的数据持久化的API。Android提供了几种方式来存储数据,本文将要覆盖其中的两种方式。第一种,使用SQLite数据库引擎来为我们存储数据。

SQLite 是一种流行的轻量级SQL数据库引擎,它将数据存在单个文件中。SQLite经常用于桌面或在那些运行不能运行客户端-服务器SQL引擎(例如MySQL或PostgreSQL)的嵌入式的应用上。

每个安装在Android上的应用都可以保存和使用多个SQLite数据库文件(由数据存储容量决定),这些数据由系统自动地进行管理。应用程序的数据是私有并且不能被其他的应用程序所访问。(数据可以通过ContentProvider(译者注:内容提供者类)类进行共享,但是我们不会在本教程中覆盖关于内容提供者的内容)。当数据应用程序被更新时,数据库文件就进行持久化,当应用程序被删除时,数据库文家就被删除。

我们在BrewClock应用使用SQLite数据来维护我们的茶叶列表和泡茶所需要的时间。下面是我们我们将使用的数据表的一个总体介绍。

[code]
+————————————-+
| Table: teas |
+————+————————+
| Column | Description |
+————+————————+
| _ID | integer, autoincrement |
| name | text, not null |
| brew_time | integer, not null |
+————+————————+
[/code]

如果以前你使用过SQL,你应该熟悉这些内容。数据表有三个字段,一个唯一标示(_ID),茶叶名称(name)和泡茶时间(brew_time)字段。我们将使用Android提供给我们的API在应用中建立数据表。系统将负责在正确的位置为我们的创建数据库文件。

抽象数据库

为了确保数据库的代码容易被维护,我们用一个单独的类TeaData来抽象所有处理数据库创建,插入,和查询的代码。如果你熟悉模型-试图-控制(译者注:MVC)方法的话,这个你也应该熟悉。所有数据库代码与我们的BrewClockActitvity类隔离开来。Actitvity可以初始化一个新的TeaData实例(这个实例将连接数据库)并完成它所需要的工作。以这种方式工作保证了我们可以方便的更改我们所使用的数据库而不用修改其他那些和数据库不相关部分的代码。

通过菜单File → New → Class.在BrewClock项目中创建一个TeaData的新类。确保TeaData扩展于android.database.sqlite.SQLiteOpenHelper 类,并选中“Constructors from superclass”复选框。