Loading packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java +23 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.annotation.VisibleForTesting; import com.android.systemui.broadcast.BroadcastDispatcher; import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; Loading Loading @@ -204,9 +205,14 @@ public class TileLifecycleManager extends BroadcastReceiver implements if (DEBUG) Log.d(TAG, "Unbinding service " + mIntent + " " + mUser); // Give it another chance next time it needs to be bound, out of kindness. mBindTryCount = 0; mWrapper = null; freeWrapper(); if (mIsBound) { try { mContext.unbindService(this); } catch (Exception e) { Log.e(TAG, "Failed to unbind service " + mIntent.getComponent().flattenToShortString(), e); } mIsBound = false; } } Loading Loading @@ -290,7 +296,9 @@ public class TileLifecycleManager extends BroadcastReceiver implements private void handleDeath() { if (mWrapper == null) return; mWrapper = null; freeWrapper(); // Clearly not bound anymore mIsBound = false; if (!mBound) return; if (DEBUG) Log.d(TAG, "handleDeath"); if (checkComponentState()) { Loading Loading @@ -472,6 +480,18 @@ public class TileLifecycleManager extends BroadcastReceiver implements return mToken; } private void freeWrapper() { if (mWrapper != null) { try { mWrapper.asBinder().unlinkToDeath(this, 0); } catch (NoSuchElementException e) { Log.w(TAG, "Trying to unlink not linked recipient for component" + mIntent.getComponent().flattenToShortString()); } mWrapper = null; } } public interface TileChangeListener { void onTileChanged(ComponentName tile); } Loading packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -77,10 +77,10 @@ public class TileLifecycleManagerTest extends SysuiTestCase { // Stub.asInterface will just return itself. when(mMockTileService.queryLocalInterface(anyString())).thenReturn(mMockTileService); when(mMockTileService.asBinder()).thenReturn(mMockTileService); mContext.addMockService(mTileServiceComponentName, mMockTileService); mTileServiceIntent = new Intent().setComponent(mTileServiceComponentName); mUser = new UserHandle(UserHandle.myUserId()); mThread = new HandlerThread("TestThread"); Loading Loading
packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java +23 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import androidx.annotation.VisibleForTesting; import com.android.systemui.broadcast.BroadcastDispatcher; import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; Loading Loading @@ -204,9 +205,14 @@ public class TileLifecycleManager extends BroadcastReceiver implements if (DEBUG) Log.d(TAG, "Unbinding service " + mIntent + " " + mUser); // Give it another chance next time it needs to be bound, out of kindness. mBindTryCount = 0; mWrapper = null; freeWrapper(); if (mIsBound) { try { mContext.unbindService(this); } catch (Exception e) { Log.e(TAG, "Failed to unbind service " + mIntent.getComponent().flattenToShortString(), e); } mIsBound = false; } } Loading Loading @@ -290,7 +296,9 @@ public class TileLifecycleManager extends BroadcastReceiver implements private void handleDeath() { if (mWrapper == null) return; mWrapper = null; freeWrapper(); // Clearly not bound anymore mIsBound = false; if (!mBound) return; if (DEBUG) Log.d(TAG, "handleDeath"); if (checkComponentState()) { Loading Loading @@ -472,6 +480,18 @@ public class TileLifecycleManager extends BroadcastReceiver implements return mToken; } private void freeWrapper() { if (mWrapper != null) { try { mWrapper.asBinder().unlinkToDeath(this, 0); } catch (NoSuchElementException e) { Log.w(TAG, "Trying to unlink not linked recipient for component" + mIntent.getComponent().flattenToShortString()); } mWrapper = null; } } public interface TileChangeListener { void onTileChanged(ComponentName tile); } Loading
packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -77,10 +77,10 @@ public class TileLifecycleManagerTest extends SysuiTestCase { // Stub.asInterface will just return itself. when(mMockTileService.queryLocalInterface(anyString())).thenReturn(mMockTileService); when(mMockTileService.asBinder()).thenReturn(mMockTileService); mContext.addMockService(mTileServiceComponentName, mMockTileService); mTileServiceIntent = new Intent().setComponent(mTileServiceComponentName); mUser = new UserHandle(UserHandle.myUserId()); mThread = new HandlerThread("TestThread"); Loading