Merge "Avoid unregistering the same receiver more than once." into tm-dev

This commit is contained in:
Sudheer Shanka 2022-05-06 18:39:09 +00:00 • committed by Android (Google) Code Review
commit 9f8b90f796
2 changed files with 20 additions and 11 deletions

View file

@ -23,6 +23,7 @@ android_test_helper_app {
defaults: ["cts_support_defaults"],
sdk_version: "test_current",
static_libs: [
"androidx.annotation_annotation",
"CtsHostsideNetworkTestsAidl",
"NetworkStackApiStableShims",
],

View file

@ -28,11 +28,14 @@ import android.os.Bundle;
import android.os.RemoteCallback;
import android.util.Log;
import androidx.annotation.GuardedBy;
/**
* Activity used to bring process to foreground.
*/
public class MyActivity extends Activity {
@GuardedBy("this")
private BroadcastReceiver finishCommandReceiver = null;
@Override
@ -43,8 +46,11 @@ public class MyActivity extends Activity {
@Override
public void finish() {
if (finishCommandReceiver != null) {
unregisterReceiver(finishCommandReceiver);
synchronized (this) {
if (finishCommandReceiver != null) {
unregisterReceiver(finishCommandReceiver);
finishCommandReceiver = null;
}
}
super.finish();
}
@ -67,15 +73,17 @@ public class MyActivity extends Activity {
super.onResume();
Log.d(TAG, "MyActivity.onResume(): " + getIntent());
Common.notifyNetworkStateObserver(this, getIntent(), TYPE_COMPONENT_ACTIVTY);
finishCommandReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Finishing MyActivity");
MyActivity.this.finish();
}
};
registerReceiver(finishCommandReceiver, new IntentFilter(ACTION_FINISH_ACTIVITY),
Context.RECEIVER_EXPORTED);
synchronized (this) {
finishCommandReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Finishing MyActivity");
MyActivity.this.finish();
}
};
registerReceiver(finishCommandReceiver, new IntentFilter(ACTION_FINISH_ACTIVITY),
Context.RECEIVER_EXPORTED);
}
final RemoteCallback callback = getIntent().getParcelableExtra(
Intent.EXTRA_REMOTE_CALLBACK);
if (callback != null) {