|
15 | 15 | import java.io.ObjectInputStream; |
16 | 16 | import java.io.ObjectOutputStream; |
17 | 17 | import java.util.ArrayList; |
| 18 | +import java.util.HashMap; |
18 | 19 | import java.util.Iterator; |
19 | 20 | import java.util.List; |
20 | 21 | import java.util.Map; |
@@ -141,8 +142,7 @@ private Map<Region, RegionMonitoringState> getRegionsStateMap() { |
141 | 142 |
|
142 | 143 | private void restoreOrInitializeMonitoringStatus() { |
143 | 144 | long millisSinceLastMonitor = System.currentTimeMillis() - getLastMonitoringStatusUpdateTime(); |
144 | | - mRegionsStatesMap = new ConcurrentHashMap<Region, RegionMonitoringState>() { |
145 | | - }; |
| 145 | + mRegionsStatesMap = new ConcurrentHashMap<Region, RegionMonitoringState>(); |
146 | 146 | if (!mStatePreservationIsOn) { |
147 | 147 | LogManager.d(TAG, "Not restoring monitoring state because persistence is disabled"); |
148 | 148 | } |
@@ -180,10 +180,17 @@ protected void saveMonitoringStatusIfOn() { |
180 | 180 | try { |
181 | 181 | outputStream = mContext.openFileOutput(STATUS_PRESERVATION_FILE_NAME, MODE_PRIVATE); |
182 | 182 | objectOutputStream = new ObjectOutputStream(outputStream); |
183 | | - objectOutputStream.writeObject(getRegionsStateMap()); |
184 | | - |
| 183 | + Map<Region,RegionMonitoringState> map = getRegionsStateMap(); |
| 184 | + // Must convert ConcurrentHashMap to HashMap becasue attempting to serialize |
| 185 | + // ConcurrentHashMap throws a java.io.NotSerializableException |
| 186 | + HashMap<Region,RegionMonitoringState> serializableMap = new HashMap<Region,RegionMonitoringState>(); |
| 187 | + for (Region region : map.keySet()) { |
| 188 | + serializableMap.put(region, map.get(region)); |
| 189 | + } |
| 190 | + objectOutputStream.writeObject(serializableMap); |
185 | 191 | } catch (IOException e) { |
186 | | - LogManager.e(TAG, "Error while saving monitored region states to file. %s ", e.getMessage()); |
| 192 | + LogManager.e(TAG, "Error while saving monitored region states to file ", e); |
| 193 | + e.printStackTrace(System.err); |
187 | 194 | } finally { |
188 | 195 | if (null != outputStream) { |
189 | 196 | try { |
|
0 commit comments