Fix EthernetManager.addListener dependency in Tethering settings.
Ethernet service related files are going to be moved into Connectivity
module. EthernetManager.addListener(listener, exectuor) will be exposed
out as module-lib API. Replace the current API usage with the one to be
exposed.
android.os.HandlerExecutor is a hidden API which isn't visible to modules,
try to replace HanlderExecutor class with Handler.post itself although
Setttings can still access this API.
Bug: 210586283
Test: m
Change-Id: I618b43769c68897f4724fae8213181be1cc770c6
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 1a21b55..e485d1e 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -39,7 +39,6 @@
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
-import android.os.HandlerExecutor;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
@@ -324,14 +323,14 @@
mStartTetheringCallback = new OnStartTetheringCallback(this);
mTetheringEventCallback = new TetheringEventCallback();
- mTm.registerTetheringEventCallback(new HandlerExecutor(mHandler), mTetheringEventCallback);
+ mTm.registerTetheringEventCallback(r -> mHandler.post(r), mTetheringEventCallback);
mMassStorageActive = Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState());
registerReceiver();
mEthernetListener = new EthernetListener();
if (mEm != null)
- mEm.addListener(mEthernetListener);
+ mEm.addListener(mEthernetListener, r -> mHandler.post(r));
updateUsbState();
updateBluetoothAndEthernetState();
diff --git a/src/com/android/settings/network/EthernetTetherPreferenceController.java b/src/com/android/settings/network/EthernetTetherPreferenceController.java
index 06cd6a7..5b2cab7 100644
--- a/src/com/android/settings/network/EthernetTetherPreferenceController.java
+++ b/src/com/android/settings/network/EthernetTetherPreferenceController.java
@@ -48,13 +48,12 @@
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart() {
- mEthernetListener = new EthernetManager.Listener() {
- @Override
- public void onAvailabilityChanged(String iface, boolean isAvailable) {
- new Handler(Looper.getMainLooper()).post(() -> updateState(mPreference));
- }
- };
- mEthernetManager.addListener(mEthernetListener);
+ mEthernetListener = (iface, isAvailable) -> updateState(mPreference);
+ final Handler handler = new Handler(Looper.getMainLooper());
+ // Executor will execute to post the updateState event to a new handler which is created
+ // from the main looper when the {@link EthernetManager.Listener.onAvailabilityChanged}
+ // is triggerd.
+ mEthernetManager.addListener(mEthernetListener, r -> handler.post(r));
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)