diff options
author | Joey Grover <joeygrover@gmail.com> | 2016-07-27 11:26:16 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2016-07-27 11:26:16 -0400 |
commit | c8a66c05e5f0483ca86dca5d4db6e683fa0553aa (patch) | |
tree | 1d1997946ca1bd77a138e5b107cdedbf7eaa3d1d | |
parent | 4eafee3117021b7e0538a250b5bd0d1152eff431 (diff) | |
download | sdl_android-c8a66c05e5f0483ca86dca5d4db6e683fa0553aa.tar.gz |
Removed handler leak suppression and did things the right waybugfix/issue_311
-rw-r--r-- | sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterStatusProvider.java | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterStatusProvider.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterStatusProvider.java index 146072253..f36dcb2c0 100644 --- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterStatusProvider.java +++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterStatusProvider.java @@ -1,5 +1,7 @@ package com.smartdevicelink.transport; +import java.lang.ref.WeakReference; + import android.annotation.SuppressLint; import android.content.ComponentName; import android.content.Context; @@ -22,7 +24,7 @@ public class SdlRouterStatusProvider { Messenger routerServiceMessenger = null; private ComponentName routerService = null; - final Messenger clientMessenger = new Messenger(new ClientHandler()); + final Messenger clientMessenger; private ServiceConnection routerConnection= new ServiceConnection() { @@ -59,6 +61,7 @@ public class SdlRouterStatusProvider { this.context = context; this.routerService = service; this.cb = callback; + this.clientMessenger = new Messenger(new ClientHandler(this)); } @@ -100,17 +103,26 @@ public class SdlRouterStatusProvider { } } - @SuppressLint("HandlerLeak") - class ClientHandler extends Handler { + private void handleRouterStatusConnectedResponse(int connectedStatus){ + if(cb!=null){ + cb.onConnectionStatusUpdate(connectedStatus == 1, context); + } + unBindFromService(); + routerServiceMessenger =null; + } + + static class ClientHandler extends Handler { + WeakReference<SdlRouterStatusProvider> provider; + + public ClientHandler(SdlRouterStatusProvider provider){ + this.provider = new WeakReference<SdlRouterStatusProvider>(provider); + } + @Override public void handleMessage(Message msg) { switch (msg.what) { case TransportConstants.ROUTER_STATUS_CONNECTED_STATE_RESPONSE: - if(cb!=null){ - cb.onConnectionStatusUpdate(msg.arg1 == 1, context); - } - unBindFromService(); - routerServiceMessenger =null; + provider.get().handleRouterStatusConnectedResponse(msg.arg1); break; default: break; |