适用于Android,J2ME和PC的通用简单数据存储接口

适用于Android,J2ME和PC的通用简单数据存储接口,第1张

概述我已经阅读了很多关于 Android,J2ME和RecordStore的问题,但我仍然找不到能满足我的答案. 我需要实现应该在不同平台上运行的Java应用程序的低级部分,现在这是Android和J2ME,并且将来它也应该在PC上运行.我需要存储简单的数据集,这几乎与J2ME中的RecordStore类似: 应用程序应拥有多个记录存储记录,每个记录具有: > id(但它应该是“我的”id,而不是像R 我已经阅读了很多关于 Android,J2ME和RecordStore的问题,但我仍然找不到能满足我的答案.

我需要实现应该在不同平台上运行的Java应用程序的低级部分,现在这是AndroID和J2ME,并且将来它也应该在PC上运行.我需要存储简单的数据集,这几乎与J2ME中的RecordStore类似:

应用程序应拥有多个记录存储记录,每个记录具有:

> ID(但它应该是“我的”ID,而不是像RecordStore中那样自动返回的),
>数据(只是一个字节数组).

我想我应该用所需的方法编写一个接口,每个平台都应该有自己的接口实现.

但是这个任务似乎很常见(至少对于AndroID J2ME而言),所以,也许已经有一些轻量级的实现?我问的只是因为我不喜欢重新发明轮子.

也许一些建议?

解决方法 所以,我编写了满足我要求的界面,有两个实现:AndroID和J2ME.

以下是Interface的外观:

public interface ISDataStore {   /**    * Get number of records in data store.    */   public int getNumRecords() throws SDataStoreException;   /**    * Get size of one record with specifIEd ID in bytes.    *    * @param record_ID ID of the record    */   public int getRecordSize(int record_ID) throws SDataStoreException;   /**    * Get record.    *    * @param record_ID ID of the record to read    * @param data byte array where to put the data    * @param offset offset in 'data' array from which should start to copy    */   public voID getRecord(int record_ID,byte[] data,int offset) throws SDataStoreException;   /**    * Get record.    *    * @param record_ID ID of the record to read    */   public byte[] getRecord(int record_ID) throws SDataStoreException;   /**    * Resolves is record with specifIEd ID exists or not.    *    * @param record_ID ID of the record    * @return true if record exists,otherwise false    */   public boolean isRecordExists(int record_ID) throws SDataStoreException;   /**    * Put new record or update existing one.    *    * @param record_ID ID of the record    * @param data byte array of data    * @param offset offset in the data byte array    * @param length number of bytes to store    *    * @return true if operation was successful,otherwise false    *    */   public boolean setRecord(int record_ID,int offset,int length) throws SDataStoreException;   /**    * Delete the record.    *    * @param record_ID ID of the record    *    * @return true if operation was successful,otherwise false    */   public boolean deleteRecord(int record_ID) throws SDataStoreException;   /**    * Clear all the records.    */   public voID deleteall() throws SDataStoreException;   /**    * Close the data store.    */   public voID close() throws SDataStoreException;}

还有一个数据存储工厂:

public interface ISDataStoreFactory {   /**    * @param dataStoreID ID of the data store    * @return ISDataStore with given ID. Type of this ID depends on target platform    */   public ISDataStore getDataStore(Object dataStoreID) throws SDataStoreException;   /**    * Destroys data store with given ID.    * @param dataStoreID ID of the data store. Type of this ID depends on target platform    */   public voID destroyDataStore(Object dataStoreID) throws SDataStoreException;}

Doxygen自动生成的文档可以在here找到.

带有Interface的Mercurial存储库和所有实现都可以在here找到.

我该如何使用它:

正如我在我的问题中已经说过,我有AndroID应用程序和J2ME应用程序,这两个应用程序都做类似的事情. (如果有兴趣,他们通过蓝牙与远程嵌入式设备进行通信)

这两个应用程序都有共同的低级部分,可以完成主要工作.

我有接口IMainApp,类似的东西:

public interface IMainApp {   public ISDataStoreFactory getDataStoreFactory();   /*    * ... some other methods    */}

这两个应用程序(适用于AndroID和J2ME)都有自己的此接口实现,并将它们的引用传递给低级部分.当低级部分想要打开一些数据存储时,它使用IMainApp.getDataStoreFactory返回的ISDataStoreFactory.它的工作原理就像我希望它工作一样.

希望它对任何人都有用.

总结

以上是内存溢出为你收集整理的适用于Android,J2ME和PC的通用简单数据存储接口全部内容,希望文章能够帮你解决适用于Android,J2ME和PC的通用简单数据存储接口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1124476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存