现在,已经学习了SQLite的一些功能,我们准备开发一个完整的应用程序:一个简单的contacts数据库。首先创建contacts表:sqlite> create table contacts ( > _id integer primary key autoincrement
也许,介绍SQLite及其奇特之处的最好方法是使用它。为了真实性,整个示例记录在Android模拟器:一个Android虚拟设备(AVD)上。代码清单2-4的第1行代码启动模拟器实例,使用先前创建的设备配置tablet。在这个示例中
Android使用开源数据库引擎SQLite。它一个小型、无服务器的库,具有在移动环境中极具吸引力的多种功能。在手机上,存储在SQLite数据库中的数据的持久性跨进程和电源充放电循环,而且,通常情况下,跨越系统软件升
SQL确实是一种相当简单的语言。然而,正如前面所指出的,它是整本书的主题。完整地介绍它超出本书的范围了。因为移动应用程序前后端的开发人员——移动端和服务器后端——都将很可能使用SQL,所以在使用具体的SQ
大多数RDBMS引擎支持——有不同程度的变化——非关系模型的组成部分的其他功能。如果数据库引擎被多个客户端应用程序使用,这就使得把这些功能作为引擎的一部分很有意义了,而不是把它们的实现——和由此产生的各
如前所述,Codd的原始模型基于数学,特别是称为一阶谓词逻辑(first-order predicate logic)的分支。该模型描述关系:无序元组集合(unordered sets of tuples),其类型由关系的特性定义。关系看起来很像熟悉
在深入SQLite的细节以及如何在Android上使用它之前,花一些时间了解一点历史和理论是值得的。企业Android应用程序汇集了拥有广泛经验的开发人员。特别是,相比后端开发人员,侧重于移动平台的开发人员可能不那么
在过去20年左右的时间,关系模型占据了主导地位,作为大规模数据管理系统的标准。需要长期存储大量信息的几乎所有项目都使用某种关系型引擎实现。这种相对稳定的时期可能只是一个风暴眼(eye of a storm)。尽管
本章要点●回顾关系数据库和关系模型的历史●回顾SQL语言●介绍SQLite●使用命令行操作SQLite本章wrox com代码下载请注意,本章所有的代码示例都可在https: github com wileyenterpriseandroid Examples git下载
本章指导你完成设置工具,并验证它们设置的正确性。你查看了现代Android框架如何适用于数据库应用程序。●它适应所有尺寸的Android设备。现在是时候停止抱怨混乱的分支代码,而编写可以自适应的应用程序。●它充
在本章前面,你了解了Android组件,尤其是活动组件,如何在屏幕上分组用户界面元素,以及Fragment子类如何用于分组View对象和通过那些对象处理用户交互的代码,以及声明性UI如何驱动活动和片段的配置以适应范围广
Android的设计师面临一个难题。同Web服务器不同,其所有的软件由一个开发人员 管理员控制,而移动设备上运行的多个应用程序由多个开发人员开发。用户对开发人员只有有限的信任,而开发人员之间也只有有限制的信任
Android也不同于大多数操作系统的地方是,Android的任务并不等同于一个进程。Android应用程序可以使用startActivity()方法,引起其他应用程序被启动。但是该应用程序往往是同一个任务的一部分。它的功能正在被借
在1 4节中,你了解了如何毁灭和重建活动。如果开发人员正确地处理了生命周期方法调用,Android进程中的每一个组件都可以销毁和重建。Android进程中的每个对象都包含在组件中。也就是说,在Android进程中,没有对
虽然不必知道编写Android应用程序的技术细节,但了解为什么可以启动几十个Dalvik虚拟机(VM)仍然是一个好主意,Dalvik虚拟机是Android的托管语言运行时环境的基础,而试图用传统的Java虚拟机做同样的事情,则会拖
在前面的章节中,我们理解了Android程序由组件组装而成,以及在Android托管运行时中组件和Android垃圾回收如何一起协作以保持每个进程的堆足够小。每个进程的堆需要小的一个原因是Android会同时运行多个运行时实
当loadTabFragments()方法没有找到选项卡时,就会启动代码清单1-7中的活动。值得注意的是,与本例中的其他活动类相比它所不做的事情。它的存在是为了加载包含在大屏幕上列表右边显示的片段的布局,但它没有对屏幕
这个版本的main xml文件(代码清单1-6)位于layout目录中,而不是位于layout-large目录中,其他main xml文件放置在后一个目录中。这个版本适用于每个屏幕尺寸,除了那些被Android系统认为是大的屏幕。代码清单1-6:
如果代码不做有关屏幕尺寸的判断,这意味着什么呢?在此框架下,利用Android系统来决定布局,也决定在不同的屏幕尺寸上显示的片段的数量。该文件(代码清单1-5)包含一个布局,它既包含左侧的列表片段,也包含右侧
TabbedActivity类是Activity的抽象子类。这个应用程序框架中的其他Activity子类扩展TabbedActivity,如果继续使用这个框架,添加到这个框架的Activity子类也可能会扩展这个类。作为这个框架的具体类的抽象父类,