欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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插件開啟對(duì)新Api的支持

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

什么鬼哦?安卓8.0一下無(wú)法使用? 這樣上線8.0以下的手機(jī)全部閃退了。 查一下才知道需要開啟插件啟動(dòng)對(duì)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();
		// 幾號(hào)
		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)大-它對(duì)每個(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)目升級(jí)到AGP之后,無(wú)法運(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)差分?jǐn)?shù)組的示例詳解

    Java實(shí)現(xiàn)差分?jǐn)?shù)組的示例詳解

    差分?jǐn)?shù)組是由原數(shù)組進(jìn)化而來,值為原數(shù)組當(dāng)前位置值減去上一個(gè)位置的值。本文將通過例題詳解如何利用Java實(shí)現(xiàn)差分?jǐn)?shù)組,需要的可以參考一下
    2022-06-06
  • Java設(shè)計(jì)模式之策略模式詳細(xì)解析

    Java設(shè)計(jì)模式之策略模式詳細(xì)解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式詳細(xì)解析,策略模式中,定義算法族,分別封裝起來,讓他們之間可以相互轉(zhuǎn)化,此模式讓算法的變化獨(dú)立于使用算法的客戶,需要的朋友可以參考下
    2023-11-11
  • MyBatis不同Mapper文件引用resultMap實(shí)例代碼

    MyBatis不同Mapper文件引用resultMap實(shí)例代碼

    這篇文章主要介紹了mybatis 不同Mapper文件引用resultMap的實(shí)例代碼,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-07-07
  • mybatis動(dòng)態(tài)拼接實(shí)現(xiàn)有條件的插入

    mybatis動(dòng)態(tài)拼接實(shí)現(xiàn)有條件的插入

    這篇文章主要介紹了mybatis動(dòng)態(tài)拼接實(shí)現(xiàn)有條件的插入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案

    Java中@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案

    本文主要介紹了@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring Boot實(shí)現(xiàn)通用的接口參數(shù)校驗(yàn)

    Spring Boot實(shí)現(xiàn)通用的接口參數(shù)校驗(yàn)

    本文介紹基于 Spring Boot 和 JDK8 編寫一個(gè) AOP ,結(jié)合自定義注解實(shí)現(xiàn)通用的接口參數(shù)校驗(yàn)。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Spring工作原理簡(jiǎn)單探索

    Spring工作原理簡(jiǎn)單探索

    這篇文章主要介紹了Spring工作原理簡(jiǎn)單探索,涉及Springaop與IOC,動(dòng)態(tài)代理靜態(tài)代理,反射等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 詳解spring security四種實(shí)現(xiàn)方式

    詳解spring security四種實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解spring security四種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MyBatis框架簡(jiǎn)介

    MyBatis框架簡(jiǎn)介

    本文主要介紹了MyBatis框架的基礎(chǔ)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • Java實(shí)現(xiàn)SSH模式加密

    Java實(shí)現(xiàn)SSH模式加密

    這篇文章主要介紹了Java實(shí)現(xiàn)SSH模式加密的相關(guān)資料,需要的朋友可以參考下
    2016-01-01

最新評(píng)論