数据的持久化存储
用App Inventor创建的应用,在每次运行时都会进行初始化:如果应用中设定了变量的值,当用户退出应用再重新运行应用时,那些被设定过的变量值将不复存在;而微数据库则为应用提供了一种永久的数据存储,即,每次应用启动时,都可以获得那些保存过的数据。比如游戏中保存的最高得分,每次游戏中都可以读取到它。
数据项是以字符串的方式保存在标签的名下,即,需要为保存的每一项数据设定一个专用的标签,以便之后用这个标签来读取已经保存的数据。
每个应用中只有一个数据存储区,即便在应用中添加了多个微数据库组件,它们也将使用同一个存储区。如果想使用不同的存储区,需要使用不同的密钥。同样,每个应用拥有独立的存储区,虽然在多屏应用中能够在不同屏幕之间共享数据,但同一部手机上的不同应用之间却无法通过微数据库来传递数据。
在使用AI伴侣开发应用时,使用该伴侣的所有应用都将共用一个微数据库,而一旦应用打包之后,数据的共享将不复存在。但在开发过程中,每次创建新项目时,都需留心清空微数据库。
文件管理器组件 除了通过微数据库组件来实现自动回复信息的保存,还可以通过文件管理器组件来实现。 文件管理器组件和微数据库组件类似,也没有提供可供开发者直接设置的属性,而是提供了一系列事件处理器和方法来实现数据持久化存储和读取功能,如图7-16所示。 在App Inventor的开发中,默认情况下,会将文件写入与应用有关的私有数据目录中。在AI伴侣中,为了便于调试,将文件写在/sdcard/AppInventor/data文件夹内。如果文件的路径以“/”开始,则文件的位置是相对于/sdcard而言,例如,将文件写入/myFile.txt,就是将文件写入/sdcard/myFile.txt。
调用“保存文件”方法后文件管理器组件会开始执行保存文件的相关动作,但由于被保存的文件可能会比较大,把文件写入SD卡需要一定时间,因此在这里设计的文件存储是一个异步行为,当开始执行“保存文件”后就没有一直堵在这里等着,而是继续做别的事情。当“保存文件”结束后,会触发一个“文件存储完毕”事件,这时转入“文件存储完毕”事件处理器,在本例中,显示修改成功的提示信息。