Android lint SharedPreferences.Editor.apply()警告

时间:2014-07-02 12:37:36

标签: android gradle lint

我已更新到最新的Android SDK工具(23.0.0),平台工具(20.0.0),Android Studio Gradle插件(0.12。+),突然我收到一个奇怪的Lint问题报告说我应该使用apply()而不是commit(),因为apply()是异步的,并且允许UI线程继续进行,因为commit()将阻止它进行写入。凉。但我仍然得到这个:

enter image description here

这是一个Lint bug,还是我在这里遗漏了什么?

显然我可以压制这个警告,但我发现它毫无意义,也不知道根本原因。

编辑:从命令行构建应用程序时也会引发此问题。

1 个答案:

答案 0 :(得分:5)

确实是一个Lint bug。更具体地说,this one

该错误似乎位于SharedPrefsDetectorCommitFinder内部类:

@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()的返回值分配给任何(此部分有效)时才发出此警告,但是他们忘了检查{ {1}}标志。 :)