由于做出了一些糟糕的决定,我在onCreate()
课程中遇到SQLiteOpenHelper
,可以跑5分钟。用户可以关闭手机,或者在此过程中强制关闭应用程序,这意味着我的onCreate()会过早被取消。如果是这种情况 - 我需要擦除数据库并重新运行onCreate()
。我怎么能这样做?
答案 0 :(得分:1)
只需在onCreate()
中创建表格,然后在另一个Service
或后台主题中初始化数据。
在该后台线程中,在初始化数据之前,在beginTransaction()
对象上调用SQLiteDatabase
。然后在完成后调用setTransactionSuccessful()
和endTransaction()
。
在SharedPreferences
中保留一个标记,以便检查此初始化是否已经发生
答案 1 :(得分:0)
您应该使用交易。如果你最终确定它(当过程完成时),所有数据都将被写入数据库 否则,他们不会。
如果您不知道交易是什么,请参阅以下交易教程:http://www.tutorialspoint.com/sqlite/sqlite_transactions.htm
简而言之,事务允许您以突发方式写入所有数据;如果对已开始的交易没有最终确定,则不会写入数据。
因此,如果发生任何错误或您的用户强行关闭,交易将无法完成,也不会写入任何数据。