diff --git a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java index b2657f8..b6ff69a 100644 --- a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java +++ b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java @@ -11,10 +11,18 @@ final class SdkDeviceStatesCollector { - private final JSONObject states = new JSONObject(); + private final Object mLock; + private final JSONObject states; + + SdkDeviceStatesCollector() { + mLock = new Object(); + states = new JSONObject(); + } public String getJSONString() { - return states.toString(); + synchronized (mLock) { + return states.toString(); + } } public void collectLocale() { @@ -43,8 +51,11 @@ public void collectLocale() { private void putState(String fqcn, String paramName, Object data) { String key = String.format("%s$%s", fqcn, paramName); + try { - states.put(key, data); + synchronized (mLock) { + states.put(key, data); + } } catch (JSONException e) { Logger.w(e, "Failed to put info: key=%s, value=%s", key, data); }