久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

API(Application?Programming?Interface)應用程序編程接口,java?API是一本程序員字典,是JDK提供給我們使用的類的說明文檔,下面這篇文章主要給大家介紹了關于Java高版本Api在Android中的使用方法,需

Android插件開啟對新Api的支持

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

什么鬼哦?安卓8.0一下無法使用? 這樣上線8.0以下的手機全部閃退了。 查一下才知道需要開啟插件啟動對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,原理就是編譯時會單獨打一個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); 

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

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

		// 取2017年1月第一個周一:
		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類似-但是他更強大-它對每個元素執行操作并返回一個新的 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 個元素;
    //skip 則是扔掉前 n 個元素
    List<String> personList2 = persons.stream()
    .map(Person::getName)
    .limit(10)
    .skip(3)
    .collect(Collectors.toList()); 
    System.out.println(personList2);

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

AGP7編譯的問題

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

    ...
    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'
}

總結

到此這篇關于Java高版本Api在Android中使用的文章就介紹到這了,更多相關Java高版本Api使用內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

堆(優先隊列)是一種典型的數據結構,其形狀是一棵完全二叉樹,一般用于求解topk問題。本文將利用Java語言實現堆,感興趣的可以學習一下
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節點到其他所有節點的最短路徑。本文將詳解該算法的圖解與實現,需要的可以參考一下
這篇文章主要介紹了Java中ThreadLocal導致內存OOM的原因分析,文章基于Java的相關內容展開ThreadLocal導致內存OOM的原因分析,需要的小伙v阿布可以參考一下
這篇文章主要介紹了Java中CyclicBarrier?循環屏障,可以實現讓一組線程等待至某個狀態屏障點之后再全部同時執行,下面文章分享CyclicBarrier循環屏障的原理,需要的小伙伴可以參考一下
這篇文章主要介紹了利用Java代碼寫一個并行調用模板,文章基于Java的相關內容展開寫一個并行調用模板的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
這篇文章主要介紹了SpringBoot項目引入第三方sdk?jar包,個人感覺比較好的解決方案是將jar上傳到本地的maven倉庫,然后通過pom依賴,引入第三方jar包,需要的朋友可以參考下
主站蜘蛛池模板: 九九九久久国产免费 | av日韩一区 | 99热碰| 美女在线一区二区 | 久久久久久国产精品 | 美女视频. | 一级a性色生活片久久毛片 午夜精品在线观看 | 99热这里都是精品 | 国产日韩欧美在线观看 | 亚洲中午字幕 | 一级全黄少妇性色生活免费看 | 国产在线观 | 国产成人在线视频 | 日韩欧美一区二区三区在线播放 | 色花av| 国产精品久久久久久久久久久久冷 | 午夜久久久 | 日韩一二区| 日韩免费一级 | 亚洲va欧美va天堂v国产综合 | 国产精品久久久久久久久久久免费看 | 日韩精品在线观看视频 | 一区二区三区四区毛片 | 最新国产视频 | 国产精品自产拍在线观看蜜 | 午夜免费精品视频 | 九色av | 日韩国产一区二区三区 | 欧美一级在线观看 | 国产综合精品一区二区三区 | 亚洲91精品 | 精品国产乱码久久久久久丨区2区 | 午夜看片网站 | 亚洲精品一区二区网址 | 一区二区三区日韩精品 | 国产精品久久久久久吹潮 | 国产精品地址 | 久在线视频 | 久久久久国色av免费观看性色 | 人人看人人干 | 亚洲国产成人精品在线 |