WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程BlackBerryBlackBerry 应用程序开发者指南 第二卷:高级--第8章 存储持久数据

BlackBerry 应用程序开发者指南 第二卷:高级--第8章 存储持久数据
作者:佚名  来源:本站整理  发布时间:2008-3-15 1:42:02

创建一个唯一的long

  1.        BlackBerry IDE,输入一个字符串,例如com.rim.samples.docs.userinfo.

  2.         选择此字符串.

  3.         右击,然后单击Convert 'com.rim.samples.docs.userinfo' to long. long值将会出现.
  :在你的代码加入注释表明用来生成long键的字符串..

static PersistentObject store;

static {

    store = PersistentStore.getPersistentObject( 0xa1a569278238dad2L );

}

持久存储数据

为了将数据保存到持久存储里,调用PersistentObject上的setContents().此方法用新的值替代已存在的值.调用commit()保存到持久存储里,
  :如果在提交的过程中发生一个错误,已经完成的更新不会提交.PersistentObject里的数据从最后一次提交中获取值,以保持数据的完整性.

String[] userinfo = {username, password};

synchronized(store) {

    store.setContents(userinfo);

    store.commit();

}

如果你有许多对象需要提交到存储里,你可以以一个批事务的形式提交它们.为了实现此,调用PersistentStore.getSynchObject()方法获取持久存储监视器紧锁对象.然后同步对象,如果必要,调用commit()方法.当你释放监视对象的同步时,你的所有事务一次性被提交.如果批处理有任何提交失败,整个批提交也失败.当你同步监视器对象时,如果你调用forceCommit(),这个对象立即提交,并且它不再时批事务中的一部分了.

获取持久数据

调用 PersistentObject 上的getContents() 方法.

PersistentObject.getContents()返回的对象显式的转化为你需要的类型.

synchronized(store) {

    String[] currentinfo = (String[])store.getContents();

    if(currentinfo == null) {

       Dialog.alert(_resources.getString(APP_ERROR));

       }

    else {

       currentusernamefield.setText(currentinfo[0]);

       currentpasswordfield.setText(currentinfo[1]);

       }

    }

}

 :当一个应用程序第一次访问数据据,它应该验证任何索引的顺序,如果出现一个问题,重新创建索引.应用程序应该能够识别并更正任何毁坏的或者丢失的数据的问题.为获得更对信息,参看91页的数据完整性”.

删除一个数据库

为了删除一个数据库,调用PersistentStore.destroyPersistentObject().提供一个PersistentObject的唯一键作为参数,
  : PersistentObject作为应用程序的根数据库使用.你删除它,你将删除所有此应用程序存储的持久化数据如果定义了一个PersistentStore.cod文件删除了,所有由此.cod文件创建的持久化对象也将删除.

为了删除单独的数据,把它们简单的当成普通数据看待,并删除这些数据的引用.垃圾数据会自动回收。

代码实例

本代码实例描述了如何为用户创建一个应用程序来查看它们当前的用户名和密码,输入一个新的用户名和密码,然后保存变化.
 


: UserInfo.java

/**

* UserInfo.java

* Copyright (C) 2001-2005 Research In Motion Limited. All rights reserved.

*/

package com.rim.samples.docs.userinfo;

import net.rim.device.api.ui.*;

import net.rim.device.api.ui.component.*;

import net.rim.device.api.ui.container.*;

import net.rim.device.api.system.*;

import net.rim.device.api.util.*;

import java.util.*;

import net.rim.device.api.i18n.*;

import com.rim.samples.docs.baseapp.*;

import com.rim.samples.docs.resource.*;

 

public class UserInfo extends BaseApp

         implements UserInfoResource,KeyListener, TrackwheelListener {

    private static PersistentObject store;

    private static ResourceBundle _resources;

    private AutoTextEditField usernamefield;

    private PasswordEditField passwordfield;

    private AutoTextEditField currentusernamefield;

    private AutoTextEditField currentpasswordfield;

   

    static {

       _resources = ResourceBundle.getBundle(

              UserInfoResource.BUNDLE_ID, UserInfoResource.BUNDLE_NAME);

       store = PersistentStore.getPersistentObject(0xa1a569278238dad2L);

       }

   

    private MenuItem saveItem = new MenuItem( _resources.getString(MENUITEM_SAVE), 110, 10) {

       public void run() {

           String username = usernamefield.getText();

           String password = passwordfield.getText();

           String[] userinfo = {username, password};

           synchronized(store) {

              store.setContents(userinfo);

              store.commit();

              }

           Dialog.inform(_resources.getString(APP_SUCCESS));

           usernamefield.setText(null);

           passwordfield.setText(null);

           }

       };

      

   

上一页  [1] [2] [3] [4] [5]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码