注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沉默蜂B4A安卓编程

国内资料最全的B4A资料库

 
 
 

日志

 
 

[原创][KeyValueStore类]简单和高效的数据存储键值(一)  

2014-04-01 14:26:46|  分类: 文件读写 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
[原创][KeyValueStore类]简单和高效的数据存储键值(一) - 沉默蜂QQ793136625 - 沉默蜂
 图为运行效果

下面是Main活动模块代码

#Region 代码说明

'版本:2014-04-02
'注解:沉默蜂(QQ793136625)
'博客:http://silentbees.blog.163.com (B4A技术博客)
'说明:这个类模块把SQLite数据库当作INI配置文件来读写,
'当你的安卓程序在启动时需要从外部文件读到参数,
'或安卓程序关闭时需要保存数据时,这个类模块就能帮你解决你所碰到的问题

'http://www.basic4ppc.com/android/forum/threads/KeyValueStore-class-simple-AND-efficient-key-value-data-store.26317/
'
'
'在许多情况下,应用程序需要存储各种数据。
'键/值数据存储(有时称为NoSQL)可以提供另一种关系数据库(SQL)。
'键/值存储提供了一个简单的功能。
'它允许您存储所有类型的值,每个值映射到一个关键的地方。
'非常类似于地图(以及词典、散列表、HashMap…)。
'主要的区别在于,保存在文件系统中存储。
'KeyValueStore类使用SQLite数据库来存储和检索所有类型的值。
'它使用RandomAccessFile。WriteObject或WriteEncryptedObject拯救集合和用户类型。
'使用KeyValueStore类似于使用地图:


'更多SQLite数据库的知识,可参考文章 [原创]初次接触B4A操作SQLite数据库  
'http://silentbees.blog.163.com/blog/static/2287890312013112582338699/

#End Region 代码说明


#Region  Project Attributes 
#ApplicationLabel: KeyValueStore Example
#VersionCode: 1
#VersionName: 
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
#FullScreen: False
#IncludeTitle: True
#End Region

Sub Process_Globals

' Key Value Store 键值存储
Private kvs As KeyValueStore
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)

If FirstTime Then
'在程序启动后的第一次使用中初始化KeyValueStore对象
'库 Core > 类 File > 属性 DirDefaultExternal  As String(外置默认目录)
'基于包名返回应用默认外置文件夹. 如果需要则创建文件夹.
' kvs.Initialize(File.DirInternal, "datastore")
' kvs.Initialize(File.DirDefaultExternal, "datastore")
kvs.Initialize(File.DirInternal, "datastore")
End If
'放一个简单的值到存储中
kvs.PutSimple("time", DateTime.Now)
'获取这个值
Log(DateTime.Time(kvs.GetSimple("time")))
'把一张目录资源里的图片放到指定键中
kvs.PutBitmap("bitmap1", LoadBitmap(File.DirAssets, "smiley.gif"))
'从指定键中获取这个图片,并把它作为活动视图的背景图片
Activity.SetBackgroundImage(kvs.GetBitmap("bitmap1"))
'将保存有图片的键从存储中删除
'Remove 可删除通过PutSimple、PutBitmap、PutObject、PutEncyptedObject等方式保存的键
kvs.Remove("bitmap1")
'增加一个采集
Dim list1 As List
list1.Initialize
For i = 1 To 10
list1.Add("Item #" & i)
Next
kvs.PutObject("list1", list1)
'获取这个采集
Dim list2 As List = kvs.GetObject("list1")
Log("获取这个采集为:" &CRLF & list2)
'加密这个 list 对象
kvs.PutEncyptedObject("encrypted list", list1, "topsecret")
#Region 这段代码应屏蔽掉
'这段代码在XP环境中的B4A 3.0汉化版、B4A 3.0英文版和B4A 3.5英文版等环境中调试时发现会出错
'也许用错误的密码文本去解密时会造成出错
' Try
' '请注意,如果你在调试运行这个例子,它将打破这个调用。按F5继续……
' 'note that if you run this example in Debug then it will break on this call. Press F5 to continue...
'
' '尝试用密码文本 "wrong password"对键encrypted list的值进行解密
' list2 = kvs.GetEncryptedObject("encrypted list", "wrong password")
' Catch
' Log("Wrong password!")
' End Try

#End Region
'尝试用密码文本 "topsecret"对键encrypted list的值进行解密
list2 = kvs.GetEncryptedObject("encrypted list", "topsecret")
Log("正确解码后的list对象值为:" &CRLF& list2)
kvs.Close
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

'处理回退键事件
Sub Activity_KeyPress (KeyCode As Int) As Boolean

If (KeyCode = KeyCodes.KEYCODE_BACK) Then
If (Msgbox2("是否要退出程序?", "", "确定", "取消", "", Null) = DialogResponse.POSITIVE) Then
'DialogResponse是一个预定义的对象,其中包含了可能的返回值
'DialogResponse.Positive = -1 '点击确认按钮
'DialogResponse.CANCEL= -3 '点击取消按钮 
  ExitApplication '退出应用
'Return False 表示按键信息交给系统处理
'这个处理由两个步骤组成:
'1、在系统执行默认的退出键事件之前,先执行我写的代码
'2、执行系统默认的退出键事件
Return False'返回False则表示按键信息交给系统处理
' Activity.Finish'关闭这个活动

Else
'Return True 将告诉系统,当前的退出键已经处理好了
           'Return True 只执行我写的代码,不再去执行系统默认的退出键事件
Return True'返回True则表示按键已经处理
End If
End If
End Sub

  评论这张
 
阅读(324)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017