最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java高版本Api在Android中的使用方法詳解

 更新時(shí)間:2022年05月20日 10:35:30   作者:newki  
API(Application?Programming?Interface)應(yīng)用程序編程接口,java?API是一本程序員字典,是JDK提供給我們使用的類的說明文檔,下面這篇文章主要給大家介紹了關(guān)于Java高版本Api在Android中的使用方法,需要的朋友可以參考下

Android插件開啟對新Api的支持

這一天小王導(dǎo)入了一個(gè)庫,上線之后直接崩了一大片? 找到其中的問題:

什么鬼哦?安卓8.0一下無法使用? 這樣上線8.0以下的手機(jī)全部閃退了。 查一下才知道需要開啟插件啟動(dòng)對Java Api的支持

android {
  defaultConfig {
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true

    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}

一定要開啟multiDexEnabled,原理就是編譯時(shí)會(huì)單獨(dú)打一個(gè)dex包,做一些兼容的處理。

常用的需要兼容處理的類:

1. LocalDate日期處理

		// 日期
		LocalDate today = LocalDate.now();
		// 幾號
		int dayofMonth = today.getDayOfMonth();
		// 星期幾
		int dayofWeek = today.getDayOfWeek().getValue();
		// 今年
		int dayofYear = today.getDayOfYear();
		
		LocalDate endOfFeb = LocalDate.parse("2018-02-28"); 

                // 取本月第1天:
		LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); 
		// 取本月第2天:
		LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); 

		// 取本月最后一天,再也不用計(jì)算是28,29,30還是31:
		LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());

		// 取下一天:
		LocalDate firstDayOfNextMonth = lastDayOfThisMonth.plusDays(1); 

		// 取2017年1月第一個(gè)周一:
		LocalDate firstMondayOf2017 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); 

2. Stream集合流操作

  List<widget> widgets = new ArrayList<>();
        widgets.add(new widget(Color.RED, "Name", 1));
        int sum = widgets.stream()
                .filter(w -> w.getColor() == Color.RED)
                .mapToInt(w -> w.getWeight())
                .sum();

    List<User> userList = Stream.
        of(arrayList).
        map(person -> new User(person.getName())).
        collect(Collectors.toList());

    //peek 和map類似-但是他更強(qiáng)大-它對每個(gè)元素執(zhí)行操作并返回一個(gè)新的 Stream
    Stream.of("one", "two", "three", "four") 
    .filter(e -> e.length() > 3) 
    .peek(e -> System.out.println("Filtered value: " + e)) 
    .map(String::toUpperCase) 
    .peek(e -> System.out.println("Mapped value: " + e)) 
    .collect(Collectors.toList());

    //limit 返回 Stream 的前面 n 個(gè)元素;
    //skip 則是扔掉前 n 個(gè)元素
    List<String> personList2 = persons.stream()
    .map(Person::getName)
    .limit(10)
    .skip(3)
    .collect(Collectors.toList()); 
    System.out.println(personList2);

和Kotlin的一些操作符有點(diǎn)類型,現(xiàn)在項(xiàng)目都是Kotlin了,一般也用不到這玩意了,如果大家是Java的老項(xiàng)目,希望filter map集合的可以使用stream的api很方便的轉(zhuǎn)換數(shù)據(jù)。

AGP7編譯的問題

之前的項(xiàng)目編譯的時(shí)候,由于我們的兼容代碼是寫在子模塊的build.gradle的app模塊編譯之后會(huì)merge成功,運(yùn)行也沒有問題。但是前段時(shí)間項(xiàng)目升級到AGP之后,無法運(yùn)行指定的api了,需要在運(yùn)行模塊app的build.gradle中添加兼容代碼塊才能運(yùn)行,這里特此記錄一下。

    ...
    repositories {
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        google()
        maven { url 'https://jitpack.io' }
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.3'

        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        classpath 'com.google.gms:google-services:4.3.8'
    }
   ...

app build.gradle需要添加

android {
  defaultConfig {
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true

    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}

總結(jié)

到此這篇關(guān)于Java高版本Api在Android中使用的文章就介紹到這了,更多相關(guān)Java高版本Api使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

清水河县| 长春市| 昭平县| 昭苏县| 武城县| 贵溪市| 崇仁县| 郧西县| 高清| 靖边县| 田东县| 左云县| 阿坝县| 石家庄市| 武隆县| 环江| 镶黄旗| 冕宁县| 河北区| 栾城县| 惠安县| 三明市| 白河县| 前郭尔| 米脂县| 赣榆县| 蒙自县| 同德县| 剑阁县| 凌云县| 金昌市| 崇左市| 保靖县| 邹平县| 海门市| 伊宁县| 冷水江市| 南平市| 盈江县| 德安县| 秀山|