Only restart web socket if url/token was changed

This commit is contained in:
Jannis Mattheis
2018-05-20 15:17:16 +02:00
parent 3fecbd7462
commit 08bb8e50b1

View File

@@ -14,6 +14,8 @@ import android.support.v4.app.NotificationCompat;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import java.util.Arrays;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -30,6 +32,8 @@ public class PushService extends Service {
private final OkHttpClient client = new OkHttpClient.Builder().readTimeout(0, TimeUnit.MILLISECONDS).build(); private final OkHttpClient client = new OkHttpClient.Builder().readTimeout(0, TimeUnit.MILLISECONDS).build();
private static final String TOKEN = "@global:token"; private static final String TOKEN = "@global:token";
private static final String URL = "@global:url"; private static final String URL = "@global:url";
private static final List<String> UPDATE_ON_KEYS = Arrays.asList(TOKEN, URL);
private Handler handler = null; private Handler handler = null;
private WebSocket socket = null; private WebSocket socket = null;
private Gson gson = null; private Gson gson = null;
@@ -37,6 +41,10 @@ public class PushService extends Service {
private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (!UPDATE_ON_KEYS.contains(key)) {
return;
}
if (socket != null) { if (socket != null) {
Log.i("Closing WebSocket (preference change)"); Log.i("Closing WebSocket (preference change)");
socket.close(1000, "client logout"); socket.close(1000, "client logout");