Обновление Android Jetpack от 20 мая 2020
Kirill Rozov
Полный список изменений здесь
WorkManager 2.4.0-beta01
Изменения по сравнению с 2.3.0
- Планировщик WorkManager стал более функциональным
- Добавлена возможность получить WorkInfo с помощью WorkQuery
- Поддержка RxJava 3
- Новые правила для Android Lint
- Возможность получения диагностической информации о работе WorkManager
- Изменения в поведения
- Исправление багов
Navigation 2.3.0-beta01
Изменения по сравнению с 2.2.0
- Поддержка Dynamic Feature
- Kotlin DSL для описания графа
- Новые возможности deep linking
- Улучшения в работе с
DrawerLayout NavBackStackEntryтеперь имеет доступ кSavedStateHandleдля сохранения данных- Улучшения в тестирование
NavControllerс помощьюTestNavHostController - Исправление багов
Lifecycle 2.3.0-alpha03
- Добавлена поддержка lazy сериализации. Смотрите
SavedStateHandle.setSavedStateProvider(String key, SavedStateProvider provider)
Bundle previousState = savedStateHandle.get("custom_object");
if (previousState != null) {
// Convert the previousState into your custom object
}
savedStateHandle.setSavedStateProvider("custom_object", () -> {
Bundle savedState = new Bundle();
// Put your custom object into the Bundle
return savedState;
});
- Новое API
ViewTreeViewModelStoreOwner.get(View), которое позволяет получитьViewModelStoreOwnerдля указанногоView. Может быть полезно если вам надо иметь ViewModel, связанную с View. Например элементом списка или собственной View. - Исправление багов
SavedState 1.1.0-alpha01
- Новое API
ViewTreeSavedStateRegistryOwner.get(View), которое позволяет получитьSavedStateRegistrtyдля указанногоView. - Добавлен артефакт savedstate-ktx
Activity Version 1.2.0-alpha05
- Рефакторинг API нового Activity Result API
- Поддержка
ViewTreeViewModelStoreOwnerиViewTreeSavedStateRegistryOwner - Исправление багов
AppCompat 1.3.0-alpha01
- Новые правила для Android Lint
- Поддержка
ViewTreeViewModelStoreOwnerиViewTreeSavedStateRegistryOwner - Добавлено общее API для вставки rich content (например картинок). Пока новое API интегрировано только в
AppComaptEditText. Смотрите AppCompatEditText.setRichContentReceiverCompat(RichContentReceiverCompat)
public class MyRichContentReceiver
extends TextViewRichContentReceiverCompat {
private Set<String> allMimeTypes =
Set.of("text/*", "image/gif", "image/png", "image/jpg");
@Override
public Set<String> getSupportedMimeTypes() {
return allMimeTypes;
}
@Override
public boolean onReceive(
TextView textView, ClipData clip, int source, int flags
) {
if (clip.getDescription().hasMimeType("image/*")) {
return receiveImage(textView, clip);
}
return super.onReceive(textView, clip, source);
}
private boolean receiveImage(TextView textView,ClipData clip) {
// app-specific logic to handle the content URI in the clip
}
}
- Исправление багов
Core 1.4.0-alpha01
- Добавлено общее API для вставки rich content (например картинок)
- Добавлен бэкпорт
android.os.Process.isApplicationUid(int) - Добавлен бэкпорт
LocusId - Исправление багов
Fragment 1.3.0-alpha05
- Рефакторинг API Fragment Result
- Поддержка
ViewTreeViewModelStoreOwnerиViewTreeSavedStateRegistryOwner - Улучшение документации
- Исправление багов
Также новые версии DrawerLayout, CustomView, SlidingPaneLayout достигли стадии RC, а Test 1.3.0 - новой Beta