Swap out AsyncTask usage in notification action receivers with bounded threadpool.

This commit is contained in:
Alex Hart 2020-12-16 14:10:27 -04:00 committed by Alan Evans
parent ce20dd97ff
commit 744b79419b
2 changed files with 54 additions and 63 deletions

View file

@ -4,13 +4,13 @@ import android.annotation.SuppressLint;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.AsyncTask;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.annimon.stream.Collectors; import com.annimon.stream.Collectors;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
@ -45,9 +45,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
if (threadIds != null) { if (threadIds != null) {
NotificationCancellationHelper.cancelLegacy(context, intent.getIntExtra(NOTIFICATION_ID_EXTRA, -1)); NotificationCancellationHelper.cancelLegacy(context, intent.getIntExtra(NOTIFICATION_ID_EXTRA, -1));
new AsyncTask<Void, Void, Void>() { SignalExecutors.BOUNDED.execute(() -> {
@Override
protected Void doInBackground(Void... params) {
List<MarkedMessageInfo> messageIdsCollection = new LinkedList<>(); List<MarkedMessageInfo> messageIdsCollection = new LinkedList<>();
for (long threadId : threadIds) { for (long threadId : threadIds) {
@ -59,10 +57,7 @@ public class MarkReadReceiver extends BroadcastReceiver {
process(context, messageIdsCollection); process(context, messageIdsCollection);
ApplicationDependencies.getMessageNotifier().updateNotification(context); ApplicationDependencies.getMessageNotifier().updateNotification(context);
});
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} }
} }

View file

@ -26,6 +26,7 @@ import android.os.Bundle;
import androidx.core.app.RemoteInput; import androidx.core.app.RemoteInput;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo; import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
@ -67,9 +68,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
if (replyMethod == null) throw new AssertionError("No reply method specified"); if (replyMethod == null) throw new AssertionError("No reply method specified");
if (responseText != null) { if (responseText != null) {
new AsyncTask<Void, Void, Void>() { SignalExecutors.BOUNDED.execute(() -> {
@Override
protected Void doInBackground(Void... params) {
long threadId; long threadId;
Recipient recipient = Recipient.resolved(recipientId); Recipient recipient = Recipient.resolved(recipientId);
@ -113,10 +112,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
ApplicationDependencies.getMessageNotifier().updateNotification(context); ApplicationDependencies.getMessageNotifier().updateNotification(context);
MarkReadReceiver.process(context, messageIds); MarkReadReceiver.process(context, messageIds);
});
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} }
} }
} }