Java me J2ME RMS-打开/关闭记录存储的最佳实践?

Java me J2ME RMS-打开/关闭记录存储的最佳实践?,java-me,rms,recordstore,Java Me,Rms,Recordstore,我的midlet使用两个唱片库。目前,我在应用程序启动时创建/打开两个记录存储,并在应用程序的整个生命周期内保持它们都打开 如果我在每次操作(例如,读取或写入)后打开/关闭记录存储,模拟器中的延迟会非常严重 类似地,如果我在应用程序退出时关闭记录库,则会有另一个很长的延迟 因此,我可以永远不关闭代码中的记录存储区(因此,假设当应用程序退出时,设备将自行关闭记录存储区)。如果没有,我可以采用什么样的最佳实践,而不会对用户造成明显的延迟,也不会有任何数据丢失的风险 关于这一点,我在谷歌上找不到任何信

我的midlet使用两个唱片库。目前,我在应用程序启动时创建/打开两个记录存储,并在应用程序的整个生命周期内保持它们都打开

如果我在每次操作(例如,读取或写入)后打开/关闭记录存储,模拟器中的延迟会非常严重

类似地,如果我在应用程序退出时关闭记录库,则会有另一个很长的延迟

因此,我可以永远不关闭代码中的记录存储区(因此,假设当应用程序退出时,设备将自行关闭记录存储区)。如果没有,我可以采用什么样的最佳实践,而不会对用户造成明显的延迟,也不会有任何数据丢失的风险


关于这一点,我在谷歌上找不到任何信息。

据我记忆所及,在某些手机上,只有在数据库关闭时,数据库中的更改才会永久存储。而在大多数J2ME实现中,更改保存在每个记录更改上

我建议在整个应用程序会话中保持DB打开,如果它能显著提高性能的话。当然,在destroyApp()中处理DB close是值得的

您也可以考虑实现“自动保存”功能-关闭和重新打开数据库,如果IO不活跃一段时间。 通常,重数据库访问仅在某些操作中执行,而不是经常执行。在这种情况下,您可以将一系列IO操作包装在一个“事务”中,并使用DB close完成它

换句话说,在大多数设备上,您可以使用第一种方法(保持DB打开),但在某些设备上(记不清了,可能是在诺基亚S40或S60上),如果应用程序将由VM终止(并且由于无法保证调用destroyApp,您无法处理),如果没有正确的DB关闭,则可能会导致数据丢失。所以在一般情况下,使用DB.close()语句包装关键事务是正确的