Avoid calling `finishReceiver` for unordered broadcasts (#2139)

This commit is contained in:
5ec1cff 2022-09-25 16:07:55 +08:00 committed by GitHub
parent 65136dc5ff
commit 135a7d69f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 0 deletions

View File

@ -247,6 +247,7 @@ public class LSPosedService extends ILSPosedService.Stub {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
getExecutorService().submit(() -> dispatchPackageChanged(intent)); getExecutorService().submit(() -> dispatchPackageChanged(intent));
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {
@ -272,6 +273,7 @@ public class LSPosedService extends ILSPosedService.Stub {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
getExecutorService().submit(() -> dispatchUserUnlocked(intent)); getExecutorService().submit(() -> dispatchUserUnlocked(intent));
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {
@ -294,6 +296,7 @@ public class LSPosedService extends ILSPosedService.Stub {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
getExecutorService().submit(() -> dispatchConfigurationChanged(intent)); getExecutorService().submit(() -> dispatchConfigurationChanged(intent));
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {
@ -318,6 +321,7 @@ public class LSPosedService extends ILSPosedService.Stub {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
getExecutorService().submit(() -> dispatchSecretCodeReceive()); getExecutorService().submit(() -> dispatchSecretCodeReceive());
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {
@ -347,6 +351,7 @@ public class LSPosedService extends ILSPosedService.Stub {
Log.e(TAG, "setActivityController", e); Log.e(TAG, "setActivityController", e);
} }
}); });
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {
@ -370,6 +375,7 @@ public class LSPosedService extends ILSPosedService.Stub {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
getExecutorService().submit(() -> dispatchUserChanged(intent)); getExecutorService().submit(() -> dispatchUserChanged(intent));
if (!ordered) return;
try { try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) { } catch (Throwable e) {