您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java高版本Api在Android中如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java高版本Api在Android中如何使用”文章能幫助大家解決問題。
這一天小王導入了一個庫,上線之后直接崩了一大片? 找到其中的問題:
什么鬼哦?安卓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包,做一些兼容的處理。
// 日期 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));
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很方便的轉換數據。
之前的項目編譯的時候,由于我們的兼容代碼是寫在子模塊的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中如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。