Address API review on CarrierMessagingServiceWrapper

* Rename disposeConnection to disconnect
* Save the instance of Context used to bind the service

Fixes: 176822560
Test: atest CarrierMessagingServiceWrapperTest
Change-Id: I9d9f76033076f7a1261dddbe81429f81b0603bf4
This commit is contained in:
Hall Liu
2021-01-22 12:16:54 -08:00
parent 7cdfcd8a87
commit d973ac087c
2 changed files with 14 additions and 7 deletions

View File

@@ -9464,10 +9464,10 @@ package android.service.carrier {
method @NonNull @WorkerThread public abstract java.util.List<android.content.ContentValues> onRestoreApns(int);
}
public final class CarrierMessagingServiceWrapper {
public final class CarrierMessagingServiceWrapper implements java.lang.AutoCloseable {
ctor public CarrierMessagingServiceWrapper();
method public boolean bindToCarrierMessagingService(@NonNull android.content.Context, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull Runnable);
method public void disposeConnection(@NonNull android.content.Context);
method public void disconnect();
method public void downloadMms(@NonNull android.net.Uri, int, @NonNull android.net.Uri, @NonNull java.util.concurrent.Executor, @NonNull android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback);
method public void receiveSms(@NonNull android.service.carrier.MessagePdu, @NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback);
method public void sendDataSms(@NonNull byte[], int, @NonNull String, int, int, @NonNull java.util.concurrent.Executor, @NonNull android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback);

View File

@@ -48,12 +48,12 @@ import java.util.concurrent.Executor;
* // Unable to bind: handle error.
* }
* </code>
* <p> Upon completion {@link #disposeConnection} should be called to unbind the
* <p> Upon completion {@link #disconnect} should be called to unbind the
* CarrierMessagingService.
* @hide
*/
@SystemApi
public final class CarrierMessagingServiceWrapper {
public final class CarrierMessagingServiceWrapper implements AutoCloseable {
// Populated by bindToCarrierMessagingService. bindToCarrierMessagingService must complete
// prior to calling disposeConnection so that mCarrierMessagingServiceConnection is initialized.
private volatile CarrierMessagingServiceConnection mCarrierMessagingServiceConnection;
@@ -61,6 +61,7 @@ public final class CarrierMessagingServiceWrapper {
private volatile ICarrierMessagingService mICarrierMessagingService;
private Runnable mOnServiceReadyCallback;
private Executor mServiceReadyCallbackExecutor;
private Context mContext;
/**
* Binds to the carrier messaging service under package {@code carrierPackageName}. This method
@@ -89,6 +90,7 @@ public final class CarrierMessagingServiceWrapper {
mCarrierMessagingServiceConnection = new CarrierMessagingServiceConnection();
mOnServiceReadyCallback = onServiceReadyCallback;
mServiceReadyCallbackExecutor = executor;
mContext = context;
return context.bindService(intent, mCarrierMessagingServiceConnection,
Context.BIND_AUTO_CREATE);
}
@@ -96,13 +98,12 @@ public final class CarrierMessagingServiceWrapper {
/**
* Unbinds the carrier messaging service. This method should be called exactly once.
*
* @param context the context
* @hide
*/
@SystemApi
public void disposeConnection(@NonNull Context context) {
public void disconnect() {
Preconditions.checkNotNull(mCarrierMessagingServiceConnection);
context.unbindService(mCarrierMessagingServiceConnection);
mContext.unbindService(mCarrierMessagingServiceConnection);
mCarrierMessagingServiceConnection = null;
mOnServiceReadyCallback = null;
mServiceReadyCallbackExecutor = null;
@@ -291,6 +292,12 @@ public final class CarrierMessagingServiceWrapper {
}
}
/** @hide */
@Override
public void close() {
disconnect();
}
/**
* A basic {@link ServiceConnection}.
*/