Android:重新运行数据库onCreate()如果失败

时间:2015-04-30 15:01:35

标签: android android-sqlite sqliteopenhelper android-database

由于做出了一些糟糕的决定,我在onCreate()课程中遇到SQLiteOpenHelper,可以跑5分钟。用户可以关闭手机,或者在此过程中强制关闭应用程序,这意味着我的onCreate()会过早被取消。如果是这种情况 - 我需要擦除数据库并重新运行onCreate()。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

只需在onCreate()中创建表格,然后在另一个Service或后台主题中初始化数据。

在该后台线程中,在初始化数据之前,在beginTransaction()对象上调用SQLiteDatabase。然后在完成后调用setTransactionSuccessful()endTransaction()。 在SharedPreferences中保留一个标记,以便检查此初始化是否已经发生

答案 1 :(得分:0)

您应该使用交易。如果你最终确定它(当过程完成时),所有数据都将被写入数据库 否则,他们不会。

如果您不知道交易是什么,请参阅以下交易教程:http://www.tutorialspoint.com/sqlite/sqlite_transactions.htm

简而言之,事务允许您以突发方式写入所有数据;如果对已开始的交易没有最终确定,则不会写入数据。

因此,如果发生任何错误或您的用户强行关闭,交易将无法完成,也不会写入任何数据。