18
18
package im .vector .activity ;
19
19
20
20
import android .content .Intent ;
21
+ import android .os .Build ;
21
22
import android .os .Bundle ;
23
+ import android .preference .PreferenceManager ;
22
24
23
25
import org .jetbrains .annotations .NotNull ;
24
26
import org .matrix .androidsdk .MXSession ;
39
41
import im .vector .gcm .GcmRegistrationManager ;
40
42
import im .vector .receiver .VectorUniversalLinkReceiver ;
41
43
import im .vector .services .EventStreamService ;
44
+ import im .vector .util .PreferencesManager ;
42
45
import kotlin .Pair ;
43
46
44
47
/**
@@ -50,11 +53,13 @@ public class SplashActivity extends MXCActionBarActivity {
50
53
public static final String EXTRA_MATRIX_ID = "EXTRA_MATRIX_ID" ;
51
54
public static final String EXTRA_ROOM_ID = "EXTRA_ROOM_ID" ;
52
55
53
- private Map <MXSession , IMXEventListener > mListeners ;
54
- private Map <MXSession , IMXEventListener > mDoneListeners ;
56
+ private Map <MXSession , IMXEventListener > mListeners = new HashMap <>() ;
57
+ private Map <MXSession , IMXEventListener > mDoneListeners = new HashMap <>() ;
55
58
56
59
private final long mLaunchTime = System .currentTimeMillis ();
57
60
61
+ private static final String NEED_TO_CLEAR_CACHE_BEFORE_81200 = "NEED_TO_CLEAR_CACHE_BEFORE_81200" ;
62
+
58
63
/**
59
64
* @return true if a store is corrupted.
60
65
*/
@@ -133,8 +138,22 @@ public void initUiAndData() {
133
138
return ;
134
139
}
135
140
136
- mListeners = new HashMap <>();
137
- mDoneListeners = new HashMap <>();
141
+ // Check if store is corrupted, due to change of type of some maps from HashMap to Map in Serialized objects
142
+ // Only on Android 7.1+
143
+ // Only if previous versionCode of the installation is < 81200
144
+ // Only once
145
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .N_MR1
146
+ && PreferenceManager .getDefaultSharedPreferences (this ).getInt (PreferencesManager .VERSION_BUILD , 0 ) < 81200
147
+ && PreferenceManager .getDefaultSharedPreferences (this ).getBoolean (NEED_TO_CLEAR_CACHE_BEFORE_81200 , true )) {
148
+ PreferenceManager .getDefaultSharedPreferences (this )
149
+ .edit ()
150
+ .putBoolean (NEED_TO_CLEAR_CACHE_BEFORE_81200 , false )
151
+ .apply ();
152
+
153
+ // Force a clear cache
154
+ Matrix .getInstance (this ).reloadSessions (this );
155
+ return ;
156
+ }
138
157
139
158
List <String > matrixIds = new ArrayList <>();
140
159
0 commit comments