Skip to content

Common things that break Android

BenjaminAmos edited this page Sep 12, 2021 · 1 revision

Common things that break Android

JSONArray#iterator or for-each loops on JSONArray objects - Use for loops instead

Incorrect

for (Object musicFileName : musicNode.getJSONArray("menuMusic")) {
    logger.info(musicFileName.toString());
}

Correct

JSONArray musicArray = musicNode.getJSONArray("menuMusic")
for (int fileNameNo = 0; fileNameNo < musicArray.length(); fileNameNo++) {
    Object musicFileName = musicArray.get(fileNameNo);
    logger.info(musicFileName.toString()));
}

JSONArray#toList - Create the list manually instead

Incorrect

List<Object> arrayList = new ArrayList<>(mazeNode.toList());

Correct

List<Object> arrayList = new ArrayList<>();
for (int i = 0; i < mazeNode.length(); i++) {
    arrayList.add(mazeNode.get(i));
}

JSONObject.getFloat - Use (float) JSONObject.getDouble instead

Incorrect

float minGrav = rootNode.getFloat("minGrav");

Correct

float minGrav = (float) rootNode.getDouble("minGrav");

Using methods that are only supported in newer versions of Android than the minimum (API 24):

  • Class#getTypeName
  • ThreadLocal#withInitial
  • Any of the java.nio classes (Path, FileSystem etc.) - Use File instead
Clone this wiki locally