Приложение генерирует утечки [дубликаты]

Это потому, что метод Scanner.nextInt не использует символ последней новой строки вашего ввода и, следовательно, newline потребляется в следующий вызов Scanner.nextLine .

Вы столкнетесь с аналогичным поведением, когда вы используете Scanner.nextLine после Scanner.next() или любого метода Scanner.nextFoo (кроме самого nextLine).

Обход проблемы:

  • Пропустить пустой Scanner.nextLine вызов после Scanner.nextInt или Scanner.nextFoo, чтобы потреблять остальную часть этой линии, включая newline
    int option = input.nextInt();
    input.nextLine();  // Consume newline left-over
    String str1 = input.nextLine();
    
  • Или было бы еще лучше, если вы прочитаете ввод через Scanner.nextLine и преобразуете свой ввод в нужный формат. Например, к целому числу с использованием метода Integer.parseInt(String) .
    int option = 0;
    try {
        option = Integer.parseInt(input.nextLine());
    } catch (NumberFormatException e) {
        e.printStackTrace();
    }
    String str1 = input.nextLine();
    

0
задан Stefan Ciprian Hotoleanu 30 September 2015 в 11:59
поделиться

1 ответ

Это приложение называется утечкой canary.

// For development purposes only
// https://github.com/square/leakcanary
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'

Удалите эти строки из файла build.gradle, если они у вас есть.

Вы также должны иметь эту строку LeakCanary.install(this); в ваш файл активности, и вы также должны удалить его.

3
ответ дан Johannes Dragulanescu 27 August 2018 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: