Avoid unregistering the same receiver more than once.
Bug: 231496005 Test: atest com.android.cts.net.HostsideRestrictBackgroundNetworkTests Ignore-AOSP-First: This will cherry-picked to AOSP later. Change-Id: Iba17daa70f14bdee1d1a7d32cb9dc64623ba1d24
This commit is contained in:
parent
b2db0b5119
commit
e652160c94
2 changed files with 20 additions and 11 deletions
|
|
@ -23,6 +23,7 @@ android_test_helper_app {
|
|||
defaults: ["cts_support_defaults"],
|
||||
sdk_version: "test_current",
|
||||
static_libs: [
|
||||
"androidx.annotation_annotation",
|
||||
"CtsHostsideNetworkTestsAidl",
|
||||
"NetworkStackApiStableShims",
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue