成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

BlackBerry開發(fā)平臺(tái)的永久存儲(chǔ)-Persistent Store

移動(dòng)開發(fā)
BlackBerry開發(fā)的概念你是否了解,這里和大家分享一下Blackberry開發(fā)平臺(tái)的永久存儲(chǔ)-PersistentStore,希望本文的介紹能讓你有所收獲。

本文和大家重點(diǎn)學(xué)習(xí)一下Blackberry開發(fā)平臺(tái)的永久存儲(chǔ)-PersistentStore,主要包括BlackberrySDK5.0版本支持三種存儲(chǔ)方式,PersistentStore存儲(chǔ)對(duì)數(shù)據(jù)類型和對(duì)象的要求等內(nèi)容,相信通過本文的學(xué)習(xí)你對(duì)Blackberry開發(fā)平臺(tái)的永久存儲(chǔ)-PersistentStore的概念一定會(huì)有深入的了解。

Blackberry開發(fā)平臺(tái)的永久存儲(chǔ)-PersistentStore

BlackberrySDK5.0版本支持三種存儲(chǔ)方式:

◆RMS-RecordStore
◆PersistentStore-persistentstoreforRIMlet
◆SQLLiteforRIMlet

RMS方式的存儲(chǔ)是基于byte數(shù)組的存儲(chǔ),對(duì)象需要先序列化,再存儲(chǔ)。SQLLite是數(shù)據(jù)庫方式存儲(chǔ),支持SQL語句,這是5.0SDK的新特性。Blackberry最成熟,最流行的存儲(chǔ)方式是PersistentStore,可以直接存儲(chǔ)對(duì)象。本文詳細(xì)介紹PersistentStore的方式。

BlackBerry開發(fā)平臺(tái)中PersistentStore存儲(chǔ)對(duì)數(shù)據(jù)類型和對(duì)象的要求:

◆被存儲(chǔ)對(duì)象只包含基本數(shù)據(jù)類型-int,String,long,boolean,byte,等等
◆被存儲(chǔ)類必須要執(zhí)行Persistable接口
◆PersistentStore以Key-Valuepair的方式進(jìn)行數(shù)據(jù)存儲(chǔ),key必須是一個(gè)long值,value的類型是Object.下面來看一個(gè)例子:

1.創(chuàng)建存儲(chǔ)數(shù)據(jù)類,比如classMyData:

 

  1. publicclassMyDataimplementsPersistable{  
  2.  
  3. privateStringm_userName;  
  4. privateStringm_company;  
  5. privateStringm_title;  
  6. privateintm_age;  
  7.  
  8. publicMyData(){}  
  9.  
  10. publicvoidsetUserName(StringuserName){  
  11. m_userName=userName;  
  12. }  
  13.  
  14. publicStringgetUserName(){  
  15. returnm_userName;  
  16. }  
  17.  
  18. publicvoidsetCompany(Stringcompany){  
  19. m_company=company;  
  20. }  
  21.  
  22. publicStringgetCompany(){  
  23. returnm_company;  
  24. }  
  25.  
  26. publicvoidsetTitle(Stringtitle){  
  27. m_title=title;  
  28. }  
  29. publicStringgetTitle(){  
  30. returnm_title;  
  31. }  
  32. publicvoidsetAge(intage){  
  33. m_age=age;  
  34. }  
  35. publicintgetAge(){  
  36. returnm_age;  
  37. }  
  38. }  
  39.  

 

注意的是MyData類執(zhí)行了Persistable接口,這個(gè)接口沒有任何要執(zhí)行的函數(shù)。MyData的instancevariable都是基本類型,也可以有方法。

2.存儲(chǔ)數(shù)據(jù)

 

  1. publicstaticfinallongID=0x5d8a91784555e0f8L;  
  2.  
  3. publicvoidsaveData(){  
  4.  
  5. if(myData==null){  
  6. myData=newMyData();  
  7. }  
  8.  
  9. myData.setUserName("Protoss");  
  10. myData.setCompany("Blizzard");  
  11. myData.setTitle("Manager");  
  12. myData.setAge(26);  
  13.  
  14. if(dataStore==null){  
  15. dataStore=PersistentStore.getPersistentObject(ID);  
  16. }  
  17.  
  18. synchronized(dataStore){  
  19. if(dataStore.getContents()==null){  
  20. dataStore.setContents(myData);  
  21. dataStore.commit();  
  22. }  
  23. }  
  24. }  
  25.  

 

PersistentStore是key-valuepair的存儲(chǔ),需要一個(gè)ID,對(duì)應(yīng)一個(gè)PersistentObject,存取數(shù)據(jù)時(shí)都要用到,一個(gè)ID只對(duì)應(yīng)一個(gè)PersistentObject。存儲(chǔ)第一步需要從PersistentStore中用ID獲取PersistentObject,再調(diào)用PersistentObject.setContents(Object)接口填入存儲(chǔ)對(duì)象,這步其實(shí)還沒有保存數(shù)據(jù),需要調(diào)用PersistentObject.commit()保存數(shù)據(jù)。

3.獲取數(shù)據(jù)

 

  1. publicstaticfinallongID=0x5d8a91784555e0f8L;  
  2.  
  3. publicvoidrecoverDataFromStore(){  
  4.  
  5. if(dataStore==null){  
  6. dataStore=PersistentStore.getPersistentObject(ID);  
  7. }  
  8.  
  9. synchronized(dataStore){  
  10.  
  11. if(dataStore.getContents()!=null){  
  12. myData=(MyData)dataStore.getContents();  
  13. }  
  14. }  
  15.  
  16. if(myData!=null){  
  17. userNameField.setText(myData.getUserName());  
  18. companyField.setText(myData.getCompany());  
  19. titleField.setText(myData.getTitle());  
  20. ageField.setText(myData.getAge()+"");  
  21. }  
  22. }  
  23.  

 

獲取數(shù)據(jù)第一步用ID獲取對(duì)應(yīng)的持久對(duì)象PersistentObject,在調(diào)用PersistentObject.getContents()獲取數(shù)據(jù)對(duì)象,獲取的對(duì)象類為Object,需要轉(zhuǎn)換成實(shí)際的類型,比如myData=(MyData)dataStore.getContents()。

如下是BlackBerry開發(fā)平臺(tái)中PersistentStore的完整例子代碼,可以拷貝到Eclipse里運(yùn)行:

 

 

  1. importnet.rim.device.api.ui.UiApplication;  
  2. publicclassMyAppextendsUiApplication{  
  3. publicstaticvoidmain(String[]args){  
  4. MyAppapp=newMyApp();  
  5. app.enterEventDispatcher();  
  6. }  
  7.  
  8. publicMyApp(){  
  9. MyScreenmyScreen=newMyScreen();  
  10. pushScreen(myScreen);  
  11. }  
  12. }  
  13.  
  14. importnet.rim.device.api.util.Persistable;  
  15. publicclassMyDataimplementsPersistable{  
  16.  
  17. privateStringm_userName;  
  18. privateStringm_company;  
  19. privateStringm_title;  
  20. privateintm_age;  
  21.  
  22. publicMyData(){}  
  23.  
  24. publicvoidsetUserName(StringuserName){  
  25. m_userName=userName;  
  26. }  
  27.  
  28. publicStringgetUserName(){  
  29. returnm_userName;  
  30. }  
  31.  
  32. publicvoidsetCompany(Stringcompany){  
  33. m_company=company;  
  34. }  
  35.  
  36. publicStringgetCompany(){  
  37. returnm_company;  
  38. }  
  39.  
  40. publicvoidsetTitle(Stringtitle){  
  41. m_title=title;  
  42. }  
  43.  
  44. publicStringgetTitle(){  
  45. returnm_title;  
  46. }  
  47.  
  48. publicvoidsetAge(intage){  
  49. m_age=age;  
  50. }  
  51.  
  52. publicintgetAge(){  
  53. returnm_age;  
  54. }  
  55. }  
  56.  
  57. importnet.rim.device.api.system.PersistentObject;  
  58. importnet.rim.device.api.system.PersistentStore;  
  59. importnet.rim.device.api.ui.Field;  
  60. importnet.rim.device.api.ui.FieldChangeListener;  
  61. importnet.rim.device.api.ui.component.BasicEditField;  
  62. importnet.rim.device.api.ui.component.ButtonField;  
  63. importnet.rim.device.api.ui.component.LabelField;  
  64. importnet.rim.device.api.ui.container.MainScreen;  
  65.  
  66. publicclassMyScreenextendsMainScreenimplementsFieldChangeListener{  
  67.  
  68. publicstaticfinallongID=0x5d8a91784555e0f8L;  
  69.  
  70. privatePersistentObjectdataStore;  
  71.  
  72. privateBasicEditFielduserNameField;  
  73. privateBasicEditFieldcompanyField;  
  74. privateBasicEditFieldtitleField;  
  75. privateBasicEditFieldageField;  
  76. privateButtonFieldsaveButton;  
  77.  
  78. privateMyDatamyData;  
  79.  
  80. publicMyScreen(){  
  81. super();  
  82. setTitle("PersistDataTest");  
  83. initialize();  
  84. addToWindow();  
  85. recoverDataFromStore();  
  86. }  
  87.  
  88. privatevoidinitialize(){  
  89. userNameField=newBasicEditField("UserName:","",20,BasicEditField.FILTER_DEFAULT);  
  90. companyField=newBasicEditField("CompanyName:","",20,BasicEditField.FILTER_DEFAULT);  
  91. titleField=newBasicEditField("Title:","",20,BasicEditField.FILTER_DEFAULT);  
  92. ageField=newBasicEditField("Age:","",20,BasicEditField.FILTER_NUMERIC);  
  93. saveButton=newButtonField("save");  
  94. saveButton.setChangeListener(this);  
  95. }  
  96.  
  97. privatevoidaddToWindow(){  
  98. add(userNameField);  
  99. add(titleField);  
  100. add(companyField);  
  101. add(ageField);  
  102. add(saveButton);  
  103. }  
  104.  
  105. publicvoidsaveData(){  
  106.  
  107. if(myData==null){  
  108. myData=newMyData();  
  109. }  
  110.  
  111. myData.setUserName(userNameField.getText());  
  112. myData.setCompany(companyField.getText());  
  113. myData.setTitle(titleField.getText());  
  114. myData.setAge(Integer.valueOf(ageField.getText()).intValue());  
  115.  
  116. if(dataStore==null){  
  117. dataStore=PersistentStore.getPersistentObject(ID);  
  118. }  
  119.  
  120. synchronized(dataStore){  
  121. if(dataStore.getContents()==null){  
  122. dataStore.setContents(myData);  
  123. dataStore.commit();  
  124. }  
  125. }  
  126. }  
  127.  
  128. publicvoidrecoverDataFromStore(){  
  129.  
  130. if(dataStore==null){  
  131. dataStore=PersistentStore.getPersistentObject(ID);  
  132. }  
  133.  
  134. synchronized(dataStore){  
  135.  
  136. if(dataStore.getContents()!=null){  
  137. myData=(MyData)dataStore.getContents();  
  138. }  
  139. }  
  140.  
  141. if(myData!=null){  
  142. userNameField.setText(myData.getUserName());  
  143. companyField.setText(myData.getCompany());  
  144. titleField.setText(myData.getTitle());  
  145. ageField.setText(myData.getAge()+"");  
  146. }  
  147. }  
  148.  
  149. publicvoidfieldChanged(Fieldfield,intcontext){  
  150. if(field==saveButton){  
  151. saveData();  
  152. }  
  153. }  
  154. }  

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2018-06-21 15:14:51

Kubernetes存儲(chǔ)容器

2018-07-19 10:56:16

Kubernetes存儲(chǔ)架構(gòu)

2013-05-03 11:01:22

iOS開發(fā)歸檔永久存儲(chǔ)數(shù)據(jù)

2009-07-17 14:51:22

.Net Micro

2010-06-22 16:19:01

Black Berry

2010-05-22 16:57:09

BlackBerry開

2011-05-03 15:13:23

BlackBerryWidget

2011-07-18 14:46:56

PhoneGapBlackBerry

2017-11-21 14:32:05

容器持久存儲(chǔ)

2010-06-08 16:47:18

BlackBerry開

2011-05-03 16:41:04

BlackBerry

2011-05-03 15:28:15

BlackBerryWidget

2010-08-20 13:47:11

BlackBerry應(yīng)BlackBerry

2010-06-12 16:29:00

BlackBerry開

2020-03-25 11:37:17

存儲(chǔ)云原生DevOps

2011-01-27 17:33:10

DalvikAndroidQNX

2010-04-09 17:53:56

Black Berry

2011-04-18 11:00:34

使用音頻BlackBerry

2010-07-22 15:22:58

BlackBerry開

2011-03-31 13:15:18

BlackBerry
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美激情精品一区二区 | 亚洲成人一区二区在线 | 99久热| 波多野结衣中文字幕一区二区三区 | 美女国内精品自产拍在线播放 | 国产91在线 | 中日 | 亚洲欧美日韩精品 | 亚洲欧美视频一区 | 国产精品18久久久 | 久久久新视频 | 国产午夜三级一区二区三 | www312aⅴ欧美在线看 | 日韩精品一区二区三区 | 狠狠操在线 | 久久99精品久久久 | 国产精品久久久乱弄 | 亚洲iv一区二区三区 | 国产成人精品免费视频大全最热 | 九色91视频 | 久久人人网 | 国产精品久久久久久福利一牛影视 | 欧美激情一区二区三级高清视频 | 国产精品久久久久久久久免费 | 国产色网站 | 日韩免费一二三区 | 搞黄网站在线观看 | 一区二区三区日韩 | 中文字幕亚洲一区二区三区 | 97国产精品 | 91社区在线观看高清 | 国产精品揄拍一区二区久久国内亚洲精 | 久久爆操 | 久久精品视频在线观看 | 国产成人精品综合 | 亚洲网在线 | 我我色综合 | 91视视频在线观看入口直接观看 | 日韩精品一区二区三区中文在线 | 人操人人干人 | 日韩视频 中文字幕 | 久草热线 |