Skip to content

Commit c0b08e8

Browse files
authored
Fix java warnings for unchecked conversions in PlayStoreDynamicFeatureManager (flutter#22628)
1 parent 59c440f commit c0b08e8

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

shell/platform/android/io/flutter/embedding/engine/dynamicfeatures/PlayStoreDynamicFeatureManager.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import android.content.pm.PackageManager.NameNotFoundException;
99
import android.content.res.AssetManager;
1010
import android.os.Build;
11+
import android.util.SparseArray;
12+
import android.util.SparseIntArray;
1113
import androidx.annotation.NonNull;
1214
import androidx.annotation.Nullable;
1315
import com.google.android.play.core.splitinstall.SplitInstallException;
@@ -22,10 +24,8 @@
2224
import io.flutter.embedding.engine.FlutterJNI;
2325
import java.io.File;
2426
import java.util.ArrayList;
25-
import java.util.HashMap;
2627
import java.util.LinkedList;
2728
import java.util.List;
28-
import java.util.Map;
2929
import java.util.Queue;
3030

3131
/**
@@ -40,14 +40,14 @@ public class PlayStoreDynamicFeatureManager implements DynamicFeatureManager {
4040
private @NonNull Context context;
4141
// Each request to install a feature module gets a session ID. These maps associate
4242
// the session ID with the loading unit and module name that was requested.
43-
private @NonNull Map<Integer, String> sessionIdToName;
44-
private @NonNull Map<Integer, Integer> sessionIdToLoadingUnitId;
43+
private @NonNull SparseArray<String> sessionIdToName;
44+
private @NonNull SparseIntArray sessionIdToLoadingUnitId;
4545

4646
private FeatureInstallStateUpdatedListener listener;
4747

4848
private class FeatureInstallStateUpdatedListener implements SplitInstallStateUpdatedListener {
4949
public void onStateUpdate(SplitInstallSessionState state) {
50-
if (sessionIdToName.containsKey(state.sessionId())) {
50+
if (sessionIdToName.get(state.sessionId()) != null) {
5151
// TODO(garyq): Add system channel for split aot messages.
5252
switch (state.status()) {
5353
case SplitInstallSessionStatus.FAILED:
@@ -63,8 +63,8 @@ public void onStateUpdate(SplitInstallSessionState state) {
6363
sessionIdToLoadingUnitId.get(state.sessionId()),
6464
"Module install failed with " + state.errorCode(),
6565
true);
66-
sessionIdToName.remove(state.sessionId());
67-
sessionIdToLoadingUnitId.remove(state.sessionId());
66+
sessionIdToName.delete(state.sessionId());
67+
sessionIdToLoadingUnitId.delete(state.sessionId());
6868
break;
6969
}
7070
case SplitInstallSessionStatus.INSTALLED:
@@ -83,8 +83,8 @@ public void onStateUpdate(SplitInstallSessionState state) {
8383
loadDartLibrary(
8484
sessionIdToLoadingUnitId.get(state.sessionId()),
8585
sessionIdToName.get(state.sessionId()));
86-
sessionIdToName.remove(state.sessionId());
87-
sessionIdToLoadingUnitId.remove(state.sessionId());
86+
sessionIdToName.delete(state.sessionId());
87+
sessionIdToLoadingUnitId.delete(state.sessionId());
8888
break;
8989
}
9090
case SplitInstallSessionStatus.CANCELED:
@@ -94,7 +94,8 @@ public void onStateUpdate(SplitInstallSessionState state) {
9494
String.format(
9595
"Module \"%s\" (sessionId %d) install canceled.",
9696
sessionIdToName.get(state.sessionId()), state.sessionId()));
97-
sessionIdToName.remove(state.sessionId());
97+
sessionIdToName.delete(state.sessionId());
98+
sessionIdToLoadingUnitId.delete(state.sessionId());
9899
break;
99100
}
100101
case SplitInstallSessionStatus.CANCELING:
@@ -164,8 +165,8 @@ public PlayStoreDynamicFeatureManager(@NonNull Context context, @Nullable Flutte
164165
splitInstallManager = SplitInstallManagerFactory.create(context);
165166
listener = new FeatureInstallStateUpdatedListener();
166167
splitInstallManager.registerListener(listener);
167-
sessionIdToName = new HashMap();
168-
sessionIdToLoadingUnitId = new HashMap();
168+
sessionIdToName = new SparseArray<String>();
169+
sessionIdToLoadingUnitId = new SparseIntArray();
169170
}
170171

171172
public void setJNI(@NonNull FlutterJNI flutterJNI) {
@@ -293,10 +294,10 @@ public void loadDartLibrary(int loadingUnitId, String moduleName) {
293294
// performant and robust.
294295

295296
// Search directly in APKs first
296-
List<String> apkPaths = new ArrayList();
297+
List<String> apkPaths = new ArrayList<String>();
297298
// If not found in APKs, we check in extracted native libs for the lib directly.
298-
List<String> soPaths = new ArrayList();
299-
Queue<File> searchFiles = new LinkedList();
299+
List<String> soPaths = new ArrayList<String>();
300+
Queue<File> searchFiles = new LinkedList<File>();
300301
searchFiles.add(context.getFilesDir());
301302
while (!searchFiles.isEmpty()) {
302303
File file = searchFiles.remove();

0 commit comments

Comments
 (0)