summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2016-07-27 11:26:16 -0400
committerJoey Grover <joeygrover@gmail.com>2016-07-27 11:26:16 -0400
commitc8a66c05e5f0483ca86dca5d4db6e683fa0553aa (patch)
tree1d1997946ca1bd77a138e5b107cdedbf7eaa3d1d
parent4eafee3117021b7e0538a250b5bd0d1152eff431 (diff)
downloadsdl_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.java28
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;