我正致力于跟踪“来电/拨出电话”的应用程序。将调用记录保存到数据库中。应用程序在模拟器中正常工作,但当应用程序在设备上运行时,会抛出错误,如(DatabaseIOException,File System error(12))。
以下是我正在讨论关于应用程序的方案
一个。我已经创建了我的数据库类的单例对象,并在应用程序中使用了单例类。
private MobiTracDB()
{
if(!isDBExist())
{
createDataBase();
}
else
{
openDataBase1();
}
}
public static MobiTracDB getMobiTracDB()
{
if(msMobiTrackDb == null)
{
msMobiTrackDb = new MobiTracDB();
}
if(mDb == null)
{
try
{
String myPath = Global.MOBITRACK_DB_FOLDER_PATH + DATABASE_NAME;
URI myURI = URI.create(myPath);
mDb = DatabaseFactory.openOrCreate(myURI);
}
catch ( Exception e )
{
Log.error(" In SigleTon " , e.toString());
}
}
return msMobiTrackDb;
}
B中。在Singleton DataBase对象创建时,我打开数据库进行添加/删除/更新相关操作,它工作正常。
℃。应用程序没有完全关闭,它只是去背景&当应用程序转到后台时,我正在关闭数据库。下次当SingleTon Obj初始化数据库时,Obj将初始化。
MobiTracDB.getMobiTracDB().closeDataBase1();
public synchronized void closeDataBase1()
{
try
{
if ( mDb != null )
{
mDb.close();
}
mDb = null;
}
catch ( Exception e )
{
Log.error(getClass().getName() + " Error in Closing DB " , e.toString());
}
}
但是当我在Device上部署这个应用程序时,我得到了 net.rim.device.api.database.DatabaseIOException:文件系统错误(12) 我在Singleton方法中遇到的文件系统错误(12)错误。 mDb为null,重新初始化mDb时出错。
为什么我收到错误。请帮帮我。