diff --git a/app/src/main/java/eu/faircode/email/DB.java b/app/src/main/java/eu/faircode/email/DB.java index 377144b514..a91d6be402 100644 --- a/app/src/main/java/eu/faircode/email/DB.java +++ b/app/src/main/java/eu/faircode/email/DB.java @@ -87,11 +87,7 @@ public abstract class DB extends RoomDatabase { public static synchronized DB getInstance(Context context) { if (sInstance == null) { - sInstance = migrate(context, Room - .databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME) - .openHelperFactory(new RequerySQLiteOpenHelperFactory()) - .setQueryExecutor(executor) - .setJournalMode(JournalMode.WRITE_AHEAD_LOGGING)); + sInstance = migrate(context, getBuilder(context)); Log.i("sqlite version=" + exec(sInstance, "SELECT sqlite_version() AS sqlite_version")); Log.i("sqlite sync=" + exec(sInstance, "PRAGMA synchronous")); @@ -101,6 +97,18 @@ public abstract class DB extends RoomDatabase { return sInstance; } + public static synchronized DB getInstanceMainThread(Context context) { + return migrate(context, getBuilder(context).allowMainThreadQueries()); + } + + private static RoomDatabase.Builder getBuilder(Context context) { + return Room + .databaseBuilder(context.getApplicationContext(), DB.class, DB_NAME) + .openHelperFactory(new RequerySQLiteOpenHelperFactory()) + .setQueryExecutor(executor) + .setJournalMode(JournalMode.WRITE_AHEAD_LOGGING); + } + private static String exec(DB db, String command) { Cursor cursor = null; try { diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 65128d9c89..d1755b866a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1628,7 +1628,7 @@ public class FragmentCompose extends FragmentEx { new SimpleTask() { @Override - protected EntityMessage onExecute(Context context, Bundle args) throws Throwable { + protected EntityMessage onExecute(Context context, Bundle args) { long id = args.getLong("id"); DB db = DB.getInstance(context); @@ -1647,7 +1647,8 @@ public class FragmentCompose extends FragmentEx { @Override protected void onExecuted(Bundle args, EntityMessage draft) { - showDraft(draft); + if (draft != null && state == State.NONE) + showDraft(draft); } @Override @@ -1990,7 +1991,7 @@ public class FragmentCompose extends FragmentEx { @Override public Drawable getDrawable(String source) { if (source != null && source.startsWith("cid:")) { - DB db = DB.getInstance(getContext()); + DB db = DB.getInstanceMainThread(getContext()); String cid = "<" + source.substring(4) + ">"; EntityAttachment attachment = db.attachment().getAttachment(working, cid); if (attachment != null) {