Fixed sqlite crashes

This commit is contained in:
M66B 2018-08-24 10:15:54 +00:00
parent eb3582e05d
commit 8e9aef4ea0
2 changed files with 16 additions and 14 deletions

View File

@ -79,14 +79,16 @@ public abstract class DB extends RoomDatabase {
sInstance = migrate(Room
.databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME)
.setJournalMode(JournalMode.WRITE_AHEAD_LOGGING));
return sInstance;
}
public static DB getBlockingInstance(Context context) {
return migrate(Room
.databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME)
.setJournalMode(JournalMode.WRITE_AHEAD_LOGGING)
.allowMainThreadQueries());
@Override
public void beginTransaction() {
// This is a workaround for sqlite crashing on some devices
// Confusingly, the journal mode needs to be set to write ahead logging first for this to work
getOpenHelper().setWriteAheadLoggingEnabled(false);
super.beginTransaction();
}
private static DB migrate(RoomDatabase.Builder<DB> builder) {

View File

@ -900,15 +900,6 @@ public class FragmentCompose extends FragmentEx {
String pbody = "<pre>" + body.replaceAll("\\r?\\n", "<br />") + "</pre>";
// Check data
if (action == R.id.action_send) {
if (draft.identity == null)
throw new IllegalArgumentException(context.getString(R.string.title_from_missing));
if (draft.to == null && draft.cc == null && draft.bcc == null)
throw new IllegalArgumentException(context.getString(R.string.title_to_missing));
}
try {
db.beginTransaction();
@ -940,6 +931,15 @@ public class FragmentCompose extends FragmentEx {
db.message().updateMessage(draft);
draft.write(context, pbody);
// Check data
if (action == R.id.action_send) {
if (draft.identity == null)
throw new IllegalArgumentException(context.getString(R.string.title_from_missing));
if (draft.to == null && draft.cc == null && draft.bcc == null)
throw new IllegalArgumentException(context.getString(R.string.title_to_missing));
}
// Save message ID
String msgid = draft.msgid;