android - 如何在不使用 Lambda 表达式的情况下使用新的 Android 架构?

标签 android java-8 retrofit dagger-2

我关注了this教程,直接由谷歌编写。

我目前遇到的问题是 UserRepository 类中的 userDao.save(response.body()); 行。

 private void refreshUser(final String userId) {
        executor.execute(() -> {
            // running in a background thread
            // check if user was fetched recently
            boolean userExists = userDao.hasUser(FRESH_TIMEOUT);
            if (!userExists) {
                // refresh the data
                Response response = webservice.getUser(userId).execute();
                // TODO check for error etc.
                // Update the database.The LiveData will automatically refresh so
                // we don't need to do anything else here besides updating the database
                userDao.save(response.body());
            }
        });
    }

当我尝试在我的 Android Studio 版本中这样做时,我收到一条消息,指出此语言级别不支持 Lambda 表达式。

enter image description here

我知道我可以升级我的 Android Studio 以支持 Java 8,例如 that , 但是-还有其他方法吗?我不想升级到 Java 8 只是为了使用 Lambda 表达式。

最佳答案

如果您不想使用 Java 8(您应该重新考虑),您可以手动替换:

executor.execute(() -> {
    // task...
});

与:

executor.execute(new Runnable() {
    @Override
    public void run() {
        // task...
    }
});

关于android - 如何在不使用 Lambda 表达式的情况下使用新的 Android 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551906/

相关文章:

ssl - 从 Java 连接到 SSL 1.2 主机时出现问题 - 忽略 TLS v1 不支持的密码套件

android - 改造 - 基本网址必须以/结尾

android - addOnScrollListener 的位置在滚动后加载新数据时重置为顶部

android - MediaPlayer 不播放某些音频文件的实时流

javascript - 如何使用 React Native 在 Android 设备上打开 native 邮件(与 'Linking.openURL()' iOS 相同)

java - 使用 Spark 和 Java8 从 Dataframe 获取多列的不同值计数

android - 无法解析 Java8、Android Studio 中的符号 'LocalDateTime'

android - 如何使用 Retrofit 2.0 (Kotlin) 正确解析嵌套的 JSON 对象?

java - 在wallpaperservice中显示camera2预览

java - HttpGet 是否自动处理 cookie?