diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-11-09 20:31:54 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-11-09 20:31:54 +0300 |
commit | 1f06c44cf34cc62471c14e37fb1474fe0717e525 (patch) | |
tree | aeaf4806d3b84b7ababf495ce00a01b870ccee28 /app/src/main/java | |
parent | bb8246a890f0e5b8a80cc275d8276e1cdcc6025b (diff) |
Fix concurrency issue with contact entries
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java')
2 files changed, 11 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java index 79da82338..a2ea6dd37 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java @@ -95,5 +95,6 @@ public abstract class AbstractCursorPickerAdapter<T extends RecyclerView.ViewHol */ public void onDestroy() { cursor.close(); + bindExecutor.shutdownNow(); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java index 79c65a560..22ac0c694 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java @@ -67,12 +67,12 @@ public class ContactAdapter extends AbstractCursorPickerAdapter<RecyclerView.Vie break; } case VIEW_TYPE_ITEM: { - bindExecutor.execute(() -> { - final ContactItemViewHolder viewHolder = (ContactItemViewHolder) holder; - if (!cursor.isClosed()) { - cursor.moveToPosition(position - 1); - final String displayName = cursor.getString(displayNameColumnIndex); - final String lookupKey = cursor.getString(lookupKeyColumnIndex); + final ContactItemViewHolder viewHolder = (ContactItemViewHolder) holder; + if (!cursor.isClosed()) { + cursor.moveToPosition(position - 1); + final String displayName = cursor.getString(displayNameColumnIndex); + final String lookupKey = cursor.getString(lookupKeyColumnIndex); + bindExecutor.execute(() -> { try (InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, Uri.withAppendedPath(CONTENT_LOOKUP_URI, lookupKey))) { final Bitmap thumbnail = BitmapFactory.decodeStream(inputStream); String contactInformation = ""; @@ -93,10 +93,10 @@ public class ContactAdapter extends AbstractCursorPickerAdapter<RecyclerView.Vie } catch (IOException ignored) { new Handler(Looper.getMainLooper()).post(viewHolder::bindError); } - } else { - new Handler(Looper.getMainLooper()).post(viewHolder::bindError); - } - }); + }); + } else { + new Handler(Looper.getMainLooper()).post(viewHolder::bindError); + } break; } } |