#android #gradle #lint
#Android #gradle #lint
Вопрос:
Я обновился до последней версии Android SDK Tools (23.0.0), Platform-tools (20.0.0), Android Studio Gradle plugin (0.12. ), и внезапно я получаю странный отчет о проблеме с корпусом, в котором говорится, что я должен использовать apply () вместо commit () поскольку apply() является асинхронным и позволит потоку пользовательского интерфейса продолжить, поскольку commit () будет блокировать его для записи. Прохладный. Но все же я получаю это:
Это ошибка Lint, или я что-то здесь упускаю?
Очевидно, я мог бы подавить это предупреждение, но я нахожу это бессмысленным и неосведомленным о первопричине.
РЕДАКТИРОВАТЬ: это также будет возникать при создании приложения из командной строки.
Комментарии:
1. Я думаю, что это ошибка. Попробуйте разделить ваше длинное выражение «точка» на несколько строк — назначение локальной переменной, поместите одну строку, поместите вторую строку и примените
2. Пробовал, не сработало. Тем не менее, если бы это сработало, это было бы обходным путем для удовлетворения предупреждения Lint без какой-либо реальной выгоды для удобства чтения кода.
Ответ №1:
Это действительно ошибка Lint. Более конкретно, этот.
Ошибка, похоже, находится во CommitFinder
внутреннем классе SharedPrefsDetector
:
@Override
public boolean visitMethodInvocation(MethodInvocation node) {
...
String name = node.astName().astValue();
boolean isCommit = "commit".equals(name);
if (isCommit || "apply".equals(name)) {
...
if (returnValueIgnored) {
String message = "Consider using apply() instead; commit writes "
"its data to persistent storage immediately, whereas "
"apply will handle it in the background";
mContext.report(ISSUE, node, mContext.getLocation(node), message,
null);
}
Я думаю, идея состояла в том, чтобы выдавать это предупреждение только в том случае, commit()
если вы ничему не присваивали возвращаемое значение isCommit
(эта часть работает), но они забыли поставить флажок. 🙂
Комментарии:
1. Здесь говорится: issuetracker.google.com/issues/36998746 что они исправили это и выпустили. Что мне нужно обновить, чтобы получить исправление?