我们现在应该使用Java8来开发Android吗?

我们现在应该使用Java8来开发Android吗?,android,Android,关于这一点的其他问题已经有两年多的历史了,因此我想知道Java8和Android的现状 具体地说,我想使用lambda表达式,仅以该表达式开头。我想将如下代码重构为lambda表达式: Handler handler = new Handler(Looper.getMainLooper()); handler.postDelayed(new Runnable() { @Override public void run() {

关于这一点的其他问题已经有两年多的历史了,因此我想知道Java8和Android的现状

具体地说,我想使用lambda表达式,仅以该表达式开头。我想将如下代码重构为lambda表达式:

 Handler handler = new Handler(Looper.getMainLooper());
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                missileX = ufoX;
                resetRecent();
                waitForUfoTimer = false;
            }
        }, randomize(20000, 18000));
我们现在应该使用Java8来开发Android吗

对。您需要在module build.gradle中添加以下行

android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }
 ..
}

现在,android studio默认支持使用Java8语言功能。现在你不需要杰克来做这件事了。你必须有Android Studio插件3.0.0或更高版本。

是的,我认为你应该。它引入了一些很好的特性,如lambda表达式、方法引用或流(虽然不是每个版本都支持),使代码更整洁。另一方面,整洁可能不会被视为某些人的优势,因为它可能被认为可读性较差。此外,Gradle的Android插件必须至少为
3.0.0
,这可能不是每个项目的选项

如前所述,如果
minSdk
版本低于24,则不支持
java8
的某些功能

任何
minSdk
都支持什么:

  • Lambda表达式
  • 方法引用
  • 类型注释
  • 默认和静态接口方法
  • 重复注释

  • 有关更多信息,请参阅-

    是,使用lambda表达式等语言功能绝对可以。只需更改设置以反映版本8


    但是,一些Java8API不适用于较旧的android版本。java LocalDate就是一个例子。如果你的目标是一个足够高的android版本(我相信是26个),那么这就行了,否则你将不得不使用java Date或joda timsb

    我非常怀疑“是”或“否”能否回答这个问题。这将取决于很多因素,比如你的受众和你的要求。每一个开发项目都必须权衡利弊。根据我的经验,启用Java8大大降低了我的构建速度,以至于现在无法使用它。脱糖步骤为我的身材增加了大约10秒。您的里程可能会有所不同。gradle插件和android工具的未来版本肯定会有所改进。