-1

由于一些糟糕的决定,我被困onCreate()在我的SQLiteOpenHelper课堂上,最多可以运行 5 分钟。用户可以在此过程中关闭手机或强制关闭应用程序,这意味着我的 onCreate() 将被提前取消。如果是这种情况 - 我需要擦除并onCreate()重新运行数据库。我怎样才能做到这一点?

4

2 回答 2

1

只需在另一个或后台线程中创建表onCreate()并初始化数据。Service

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

于 2015-04-30T15:30:46.977 回答
0

您应该使用事务。如果您完成它(当该过程完成时),所有数据都将写入数据库。
否则,他们不会。

如果你不知道什么是事务,这里有一个关于事务的教程:http ://www.tutorialspoint.com/sqlite/sqlite_transactions.htm

简而言之,事务允许您一次写入所有数据;如果开始的事务没有完成,则不会写入数据。

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

于 2015-04-30T15:31:52.953 回答