navigationevent
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
8 Ekim 2025 | - | - | 1.0.0-beta01 | - |
Bağımlılıkları bildirme
navigationevent'e bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-beta01") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz varsa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Bu yapıyla ilgili sürüm notu yok.
Sürüm 1.0
Sürüm 1.0.0-beta01
8 Ekim 2025
androidx.navigationevent:navigationevent-*:1.0.0-beta01
iptal edilir. 1.0.0-beta01 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEvent.touchX
veNavigationEvent.touchY
içinFloatRange
açıklamasını düzeltin. Bu değerler mutlak piksel koordinatlarını temsil eder ve1.0
üst sınıra sahip değildir. (I4b205, b/445989313)NavigationEventDispatcherOwner
composable'ınırememberNavigationEventDispatcherOwner
olarak yeniden düzenleyin. İşlev artık doğrudanNavigationEventDispatcherOwner
değerini döndürüyor. Bu sahibi bir alt bileşene sağlamak içinCompositionLocalProvider
kullanın. (I874b2, b/444446629)
Sürüm 1.0.0-alpha09
24 Eylül 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha09
iptal edilir. 1.0.0-alpha09 sürümü bu commit'leri içerir.
API Değişiklikleri
Idle()
öğesini oluşturmak yerine doğrudanNavigationEventTransitionState.Idle
tekil nesnesini kullanın. (Ic7d9e, b/444734264)- Kolaylık oluşturucuları dahili hale getirin; doğrudan oluşturma yerine genel
NavigationEventDispatcher.history
aracılığıyla örnekler alın. (I3b7e0, b/444734264) rememberNavigationEventState
aracılığıylaNavigationEventState
oluşturulması gerekiyor. Oluşturucu artık dahili. (Ie143c, b/444734264)onBackCompletedFallback
yerinefallbackOnBackPressed
kullanımlarını ve oluşturucu parametresini kullanın. Davranış değişmedi. Yalnızca tamamlanmış, işlenmemiş geri etkinliklerinde çağrılır. (Idabe9, b/444734264)NavigationEventHistory(mergedHistory, currentIndex)
öğesinin birincil oluşturucusu artıkinternal
. Harici tüketiciler, örnek oluşturmak için herkese açık oluşturucuları (boş oluşturucu veya bölüme dayalı oluşturucu) kullanmalıdır. (I1c047, b/444734264)View.setViewTreeNavigationEventDispatcherOwner
'nın boş değer kabul eden sahibi kabul etmesini sağlama (Ic9eb6, b/444436762)NavigationEventInfo
artıkinterface
yerineabstract class
. Tüm özel uygulamaları sınıftan (ör.data class MyInfo : NavigationEventInfo()
) devralacak şekilde güncelleyin. (I1e59c, b/444734264)- Eski
NavigationEventDispatcher.state
özelliği vegetState<T>()
işlevi kaldırıldı. Yeni ve ayrıdispatcher.transitionState
(hareket ilerlemesi için) vedispatcher.history
(gezinme yığını için) akışlarını kullanın. (Ic2ceb, b/444734264) NavigationEventInput.onInfoChanged(...)
geri araması değiştirilir. Güncellemeleri tek birNavigationEventHistory
nesne olarak almak için yenionHistoryChanged(history: NavigationEventHistory)
geri çağırma işlevini uygulayın. (I23e0b, b/444734264)- Yeni bir küresel
NavigationEventDispatcher.history
StateFlow
tanıtın. Bu genel olmayan akış, izleyicilerin yalnızca gezinme yığınındaki değişikliklere abone olmasına olanak tanır ve hareket ilerlerken kararlı kalır. Bu,transitionState
karşılığıdır. (I1db10, b/444734264) - Yeni bir küresel
NavigationEventDispatcher.transitionState
StateFlow
tanıtın. Bu genel olmayan akış, gözlemcilerin yalnızca fiziksel hareket durumuna (Boşta/Devam Ediyor) abone olmasına olanak tanır. Bu durum, geçmişten ayrıdır. (I171fa, b/444734264) NavigationEventHistoryState
sınıfını tanıtın. Bu, gezinme bilgileri geçmişini izlemek için temel API olarak işlev görür ve hareket durumundan ayrıdır. (I81ca5, b/444734264)NavigationEvent
artık@Immutable
olarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (If78c7, b/444734264)navigationevent-compose
işleyici API'leri güncellendi.NavigationEventHandler
veNavigationBackHandler
(ve varyantları) artık yükseltilmişNavigationEventState
'leri kabul eden yeni bir aşırı yüklemeyi destekliyor. Basit aşırı yüklemeler (currentInfo
alan) korunur ve artık bu yeni durum modelini dahili olarak kullanır. (Ic3251, b/444734264)- Yeni
@Stable
NavigationEventState<T>
durum tutucusununavigationevent-compose
kitaplığına ekleyin. Bu nesne, yerel geçmişi yerel hareket durumuyla birleştirir verememberNavigationEventState
ileNavigationEventHandler
arasındaki birincil bağlantı olur. (Ifb69f, b/444734264) NavigationEventHandler
öğesine yeni bir herkese açık, salt okunurtransitionState: TransitionState
özelliği ekleyin. İşleyiciler artık kendi geçiş durumlarını koruyor ve harici sistemler bu durumu gözlemleyebiliyor. (I9acd2, b/444734264)- Yeni
TransitionState
sealed sınıfını tanıtın. Bu API, gezinme geçmişinden ayrı olarak hareket durumunu gözlemlemek için temel API olarak kullanılır. (Id4beb, b/444734264) currentInfo
,backInfo
veforwardInfo
özellikleriniNavigationEventHandler
üzerinde herkese açık, salt okunur özellikler olarak kullanıma sunun. (Ia7636, b/444734264)NavigationEventHandler
uygulamaları artık temel oluşturucuya birinitialInfo: T
değeri sağlamalıdır. (Idcfea, b/444734264)OnBackInvokedInput
yerineOnBackInvokedOverlayInput
veyaOnBackInvokedDefaultInput
koyun. (I5323f, b/428948766)NavigationEventState
öğesini@Immutable
olarak işaretleyin. Bu, bu durumu gözlemleyen composable'ların yeniden oluşturmayı doğru şekilde atlamasını sağlayarak Compose performansını artırır. (I399c8)NavigationEventInfo.NotProvided
öğesiniNavigationEventInfo.None;
olarak yeniden adlandırın ve referansları güncelleyin. Davranış değişikliği yok. (I5e2d4)NavigationEventInfo
artık@Immutable
olarak işaretleniyor. Böylece Compose Compiler, yeniden oluşturma işlemlerini optimize edebiliyor. (I7c112)- Geriye doğru tamamlama için eğlenceli bir arayüzle Java ergonomisini iyileştirin. (I8a860)
onHasEnabledHandlerChanged
öğesinionHasEnabledHandlersChanged
olarak yeniden adlandırın. Bu, geri çağırma raporlarının yalnızca bir işleyiciyi değil, tüm işleyicilerin toplu etkinleştirme durumu hakkında rapor verdiğini netleştirir. (I1af61, b/443711297)hasEnabledHandler()
öğesiniNavigationEventDispatcher;
öğesinden kaldırın ve bunun yerineNavigationEventInput.onHasEnabledHandlersChanged
öğesini kullanın. (Idef72, b/443711297)- Dinleyicileri gezinme geçmişindeki değişikliklerden haberdar etmek için
onInfoChanged
geri çağırma işleviniNavigationEventInput
öğesine ekleyin. Bu, mevcut, geri ve ileri yığınların tam bağlamını sağlar ve Girişlerin bağlamsal bilgilere tepki vermesini sağlar. (I69a8b, b/443282983) - Make
NavigationEvent
'sswipeEdge
an@IntDef
(Icee54, b/443950342) - Bir göndericiyi tek bir öncelikle sınırlamak için
priority
parametresiniNavigationEventDispatcher.addInput
öğesine ekleyin.onHasEnabledCallbacksChanged
gibi etkinlikler artık yalnızca bu öncelikteki geri çağırmalar değiştiğinde tetiklenir. (I3e488, b/443711297) - Daha anlaşılır olması için
NavigationEventDispatcher
parametresiniparentDispatcher
yerine üst olarak yeniden adlandırın. (Id4f1f, b/443801782) - Java kullanıcıları için
NavigationEventPriority
yerine@IntDef
'nin kullanılması (I10a9f, b/440514265) - Gezinme işleyici sözleşmesini zorunlu kılın.
NavigationEventHandler
,isBackEnabled
veyaisForwardEnabled
değerinitrue
olarak ayarlıyorsa artık sırasıylaonBackCompleted
veyaonForwardCompleted
değerini geçersiz kılmanız gerekir. Varsayılan uygulamalar artık sessiz hataları önlemek için istisna oluşturuyor. (I17c62) - Gezinme etkinlik işleyicileri eklerken geçerli öncelik değerlerini zorunlu kılın. Artık desteklenmeyen bir öncelik ile
addHandler
çağrısı yapıldığındaIllegalArgumentException
oluşturulacak. Böylece, tüm hedef platformlarda yanlış kullanımla ilgili anında geri bildirim sağlanacak. (I3c474)
Hata Düzeltmeleri
addHandler
öğesini idempotent yapın; yinelenen kayıtları yoksayın. (I052aa, b/444734264)- Yeniden oluşturma sırasında
NavigationEventState
özelliklerini senkronize tutun. (Ib3b4d, b/444734264) NavigationEventInputs
, kayıt olduktan hemen sonra mevcut bağlamsal bilgileri (geçerli, geri, ileri) aldığından emin olun. (Ie65bf, b/443282983)
Sürüm 1.0.0-alpha08
10 Eylül 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha08
iptal edilir. 1.0.0-alpha08 sürümü bu commit'leri içerir.
Yeni Özellikler
- Akış tabanlı işleyicinin yerini alan lambda tabanlı
NavigationEventHandler
API'sini kullanıma sunma. Geri ve ileri hareketlerini akış toplamak yerine basit geri çağırmalarla işleyerek ortak metinleri azaltın ve iptal sorunlarını önleyin. Hedeflenen kolaylık API'leri olarakNavigationBackHandler
veNavigationForwardHandler
'yi sağlayın. Akış tabanlıNavigationEventHandler
öğesini kaldırın ve yeni geri çağırmalara geçin. (I23bac, b/436248277) - Pasif dinleyicilerin, birleştirilmiş geri bilgileri aracılığıyla tam gezinme geçmişine erişmesine izin verin. En üstteki geri çağırma ile sınırlı kalmak yerine, kullanıcı arayüzlerinin önizlemeleri ve iç içe yerleştirilmiş gezinme geçmişini oluşturmasını sağlayın. (I7a510, b/436248277)
- Gezinme durumunu netleştirmek ve iç içe yerleştirilmiş işleyicilerle ileri gezinmeyi desteklemek için açık bir geri/geçerli/ileri modeli sunun. (Ib86da, b/420443609)
NavigationEventCallback
öğesineonForward*
yöntemleri veisForwardEnabled
ekleyin. (Ic100f, b/436248290)NavigationEventInput
öğesine ileri gezinme desteği ekleyin. (I5734b)
API Değişiklikleri
TestNavigationEventCallback
ile ileri gezinme etkinliklerinin test edilmesini etkinleştirin.isForwardEnabled
veonForward*
kancalarını kullanın. (I21fb5, b/420443609)NavEvent
içindeonEvent*
geri aramalarınıonBack*
olarak yeniden adlandırın. (I228b3, b/436248290)SwipeEdge
değerini satır içi sınıfa dönüştürün. (Id5e01)navigationevent
kitaplığının Java ile birlikte çalışmasını sağlayın. Tüm herkese açık API'lere artık Java kodundan tam olarak erişilebilir. Bu sayede, karma dilli veya yalnızca Java'dan oluşan projelere sorunsuz entegrasyon sağlanır. (Ibc944,I5465f, I9fb1e, b/440532890b/443040294)NavigationEventCallback
rolünüNavigationEventHandler
olarak yeniden adlandırarak API rollerini netleştirin. Bu değişiklik, çok aşamalı gezinme hareketlerini işleme amacını daha iyi yansıtır. İlgiliaddCallback
yöntemi artıkaddHandler
. (I2492a, b/443040331)
Hata Düzeltmeleri
- İleri gezinmede geri yedeklemenin çalışmasını önleyin. (I74814, b/436248290)
- Tahmini ileri gezinme için destek ekleyin.
NavigationEvent
API'ler artık hem geri hem de ileri hareketlerini işleyerek her iki gezinme yönü için tutarlı animasyonlar sağlıyor. (Idc98c, b/436248290) - Bir
IllegalStateException
alt öğe kaldırıldığında yeniden oluşturma sırasında kilitlenmeyiNavigationEventDispatcherOwner
önleme. (Iff50c, b/412629020) - Pasif dinleyiciler artık birleştirilmiş geri bilgiler aracılığıyla tam gezinme geçmişine erişebilir. Böylece kullanıcı arayüzleri, en üstteki geri çağırma ile sınırlı kalmak yerine önizlemeleri ve iç içe yerleştirilmiş gezinme geçmişini oluşturabilir. (I7a510, b/436248277)
Sürüm 1.0.0-alpha07
27 Ağustos 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha07
iptal edilir. 1.0.0-alpha07 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEventDispatcher.onHasEnabledCallbacksChanged
öğesini kaldırın. (I50e97)NavigationEventCallback.onEventCompleted()
adlı kullanıcıyı katkıda bulunan yapın. (I36b38)NavigationEventCallback#on*
yöntemleriniprotected
olarak değiştirin. Geçersiz kılmak için arama kodunu güncelleyin. (I6b691)DirectNavigationEventInput
işlevlerini yeniden adlandırın. (Iffb62)NavigationEventInput.onAttach
öğesinionAdded
olarak yeniden adlandırın. (I2d0b8)NavigationEventInput.onDetach
öğesinionRemoved
olarak yeniden adlandırın. (I2d0b8)NavigationEventInputHandler
öğesiniNavigationEventInput
olarak yeniden adlandırın. (I676a4)@EmptySuper
adlı kişiyiNavigationEventInput.onHasEnabledCallbacksChanged
listesine ekleyin. (If9853)NavigationEventInputHandler
içindeonAttach
uygulayın. (I03648)NavigationEventInputHandler
içindeonDetach
uygulayın. (I03648)- Varsayılan olarak, oluşturulduğunda
NavigationEventCallback
etkin olur. (Ic0188) NavigationEventInput.addOnHasEnabledCallbacksChangedCallback
yerineNavigationEventInput.onHasEnabledCallbacksChanged
koyun. (I64e93)NavigationEventDispatcher.addInput
için ana iş parçacığını zorunlu kılın. (Ic2930)NavigationEventDispatcher.removeInput
için ana iş parçacığını zorunlu kılın. (Ic2930)Dispatcher.addOnHasEnabledCallbacksChangedCallback
öğesini kaldırın.Dispatcher.onHasEnabledCallbacksChanged
ile değiştirin. (Ida3e3, b/436530096)
Hata Düzeltmeleri
- Hâlihazırda eklenmiş bir işleyiciyi eklemenin veya eklenmemiş bir işleyiciyi kaldırmanın yanlış yaşam döngüsü mantığını tetiklediği hata düzeltildi. (I9e47b)
Sürüm 1.0.0-alpha06
13 Ağustos 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha06
iptal edilir. 1.0.0-alpha06 sürümü bu commit'leri içerir.
Yeni Özellikler
Passive Listeners API
Artık herhangi bir gezinme ana makinesinden özel bağlamsal bilgiler iletebilir ve kullanıcı arayüzünüzün herhangi bir yerinden hareket durumu değişikliklerini pasif olarak dinleyebilirsiniz. Bu ayar, tahmine dayalı geri hareketi ve diğer hareket tabanlı gezinme için bağlama duyarlı animasyonları etkinleştirir.
Bu özellik iki bölümden oluşur:
- Bilgi Sağlama: Özel verileri taşımak için
NavigationEventInfo
kullanın. - Tüketim Durumu: Hareket ilerlemesini ve bağlamını gözlemlemek için
dispatcher.state
(NavigationEventState
) kullanın.
NavigationEventCallback
artık tek bir çağrıda hareket bağlamını ayarlamak içinsetInfo(currentInfo, previousInfo)
yöntemini kullanıma sunuyor (I1d5e7, b/424470518).NavigationEventHandler
,currentInfo
vepreviousInfo
parametrelerini kabul eden yeni bir aşırı yükleme ekleyerek Compose uygulamalarında bağlam sağlamak için kullanılan birincil API haline gelir (I6ecd3, b/424470518).
Örnek:
data class MyScreenInfo(val screenName: String) : NavigationEventInfo
NavigationEventHandler(
enabled = true,
currentInfo = MyScreenInfo("Details Screen"),
previousInfo = MyScreenInfo("Home Screen")
) { /* Handle back completion */ }
NavigationEventDispatcher
artıkdispatcher.state
vedispatcher.getState<T>()
'yi (If7fae, Ia90ca, b/424470518) kullanıma sunuyor. BuStateFlow
tabanlı API'ler, herhangi bir kullanıcı arayüzünün etkinliği doğrudan işlemeye gerek kalmadan hareket ilerlemesini ve bağlamsal verileri gözlemlemesine olanak tanır.
Örnek:
val gestureState by LocalNavigationEventDispatcherOwner.current!!
.navigationEventDispatcher
.state
.collectAsState()
val progress = gestureState.progress // Returns latestEvent.progress or 0F
when (val state = gestureState) {
is InProgress -> {
val toScreen = state.currentInfo as MyScreenInfo
val fromScreen = state.previousInfo as MyScreenInfo
println("Navigating from ${fromScreen.screenName} to ${toScreen.screenName}")
}
is Idle -> { /* Idle state */ }
}
Devam ederken
latestEvent.progress
, aksi takdirde0F
değerini döndürenprogress
özelliğiniNavigationEventState
'ye (I7b196) ekleyin:val progress = state.progress
NavigationEventDispatcherOwner
composable işlevini ekleyerekNavigationEventDispatcherOwner
örneklerini hiyerarşik olarak oluşturun, bağlayın ve kaldırın.NavigationEventDispatcher
Dağıtıcının etkin durumunun dinamik kontrolünü ve otomatik temizlemeyi etkinleştirin.@Composable fun Sample() { NavigationEventDispatcherOwner(enabled = true) { val localDispatcherOwner = LocalNavigationEventDispatcherOwner.current } }
API Değişiklikleri
isPassthrough
parametresi,NavigationEventCallback
öğesinden kaldırıldı. (I99028, b/424470518)NavigationEventState
oluşturucuları artık dahili. Test için durumuDirectNavigationEventInputHandler
üzerinden güncelleyin (varsayılan olarakIdle
olur). DurumuInProgress
olarak ayarlamak içinhandleOnStarted
veyahandleOnProgressed
,Idle
olarak geri döndürmek içinhandleOnCompleted
veyahandleOnCancelled
işlevini çağırın.NavigationEventInfo
uygulamasını güncellemek içinNavigationEventCallback.setInfo
uygulamasını kullanın. (I93dca, b/424470518)- Daha kolay örnek oluşturmaya olanak tanımak ve
TestNavigationEvent
yerine kullanılması gereken testleri basitleştirmek içinNavigationEvent
öğesine varsayılan parametreler eklendi. (I5dc49, I232f4) - Belirli mevcut/önceki durumlarla gezinme etkinliklerini test etmek için
TestNavigationEventCallback
eklendi. (Idd22e, b/424470518) NavigationEventInputHandler
, öncekiAbstractNavigationEventInputHandler
yerineDirectNavigationEventInputHandler
'de bir uygulama ile değiştirilmek üzere soyut bir sınıf haline getirildi (Iadde5, Ifed40I3897c, b/432616296, b/435416924)NavigationEventInputHandler
içindekisend*
işlevlerinin ön eklerihandle*
olarak yeniden adlandırıldı. (Iffcaf)OnBackInvokedInputHandler
, yeniabstract
NavigationInputHandler
kapsamını genişletiyor. (Ib45aa)NavigationEventDispatcherOwner
, kök dağıtıcı oluşturmak içinnull
'yi açıkça iletmeniz gereken bir üst dağıtıcı gerektirecek şekilde değiştirildi. (Ia6f64, b/431534103)
Hata Düzeltmeleri
NavigationEventDispatcher.dispose()
içinde koleksiyon kopyalarından kaçınarak verimliliği artırdı. (I4ab09)NavigationEventHandler
simgesinin etkin durumundaki değişikliklere doğru şekilde yanıt vermemesi sorunu düzeltildi. (Ia5268,I19bec, I5be5c, b/431534103)
Dokümanlar'daki yenilikler
NavigationEvent
ile ilgili KDocs, birleşik etkinlik sarmalayıcısı ve farklı gezinme türlerindeki (hareketler, tıklamalar) ayrıntı özelliği davranışı olarak rolünü netleştirmek için genişletildi. (I91e8d)- Geri arama sırasıyla ilgili davranışa özellikle dikkat çekmek için Compose API'leri (
BackHandler
,PredictiveBackHandler
,NavigationEventHandler
) için sistem geri işleme dokümanları güncellendi. (I7ab94, )
Bağımlılık Güncellemesi
NavigationEvent
artıknavigationevent-compose
yapısının tüm KMP hedeflerini desteklemesini sağlayan Compose Runtime 1.9.0-beta03'e bağlıdır. (Ia1b87)
Sürüm 1.0.0-alpha05
30 Temmuz 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05
iptal edilir. 1.0.0-alpha05 sürümü bu commit'leri içerir.
Üst-Alt Hiyerarşisi Desteği:
Bir NavigationEventDispatcher
artık hiyerarşik bir ağaç yapısı oluşturan üst ve alt dağıtıcılara sahip olabilir. Bu sayede, zincirleme göndericiler aracılığıyla kullanıcı arayüzünün yapısal hiyerarşisini yansıtarak gezinme etkinliklerinin yayılması ve karmaşık Compose kullanıcı arayüzü bileşenlerinde daha esnek bir şekilde yönetilmesi sağlanır. (I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
Hiyerarşik isEnabled
özelliği, bir dağıtıcı üzerinde yukarıdan aşağıya kontrol sağlar. Bir dağıtıcıda isEnabled
, false
olarak ayarlandığında tüm alt dağıtıcılar otomatik olarak devre dışı bırakılır. Bu özellik, gezinme etkinliği sisteminin tüm dallarının verimli bir şekilde kapatılmasını sağlar. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Ayrıca, NavigationEventCallback
üzerindeki isEnabled
özelliği artık ilişkili dağıtıcısının etkinleştirilmiş durumuna saygı duyuyor. Bu nedenle, geri arama ve göndericisi (üst öğeleri dahil) etkinleştirilmediği sürece geri arama etkinleştirilmiş olarak kabul edilmez. Bu sayede, geri arama etkinleştirme üzerinde tutarlı bir hiyerarşik kontrol sağlanır. (I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
Göndericilerin ve alt öğelerinin düzgün şekilde temizlenmesi için yeni bir dispose()
yöntem kullanıma sunuldu. Calling dispose()
, bellek sızıntılarını önlemek için dinleyicileri durdurur, tüm alt dağıtıcıları yinelemeli olarak kaldırır, dağıtıcıya kaydedilen tüm geri çağırma işlemlerini kaldırır ve dağıtıcının üst öğeyle bağlantısını kaldırır. Bu sayede, göndericilere artık ihtiyaç duyulmadığında kaynakların doğru şekilde serbest bırakılması sağlanır. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Atılan bir dağıtıcıda herhangi bir herkese açık yöntem çağrılırsa hemen bir IllegalStateException
oluşturulur. Bu, sessiz hataları önler ve geliştiricilerin geliştirme sırasında uygunsuz kullanımı belirlemesine yardımcı olur. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Not: aosp/3692572'de Compose kullanıcı arayüzünde alt dağıtıcıyı otomatik olarak yöneten yeni bir NavigationEventDispatcherOwner
Composable kullanıma sunacağız. Ancak bu değişiklik mevcut sürümde yer almadı ve bir sonraki sürümde kullanıma sunulması planlanıyor.
Gezinme Testi Kitaplığı
navigationevent
kitaplığı için özel test yardımcı programları sağlamak üzerenavigationevent-testing
modülünü ekleyin. (0e50b6)- Test için
TestNavigationEventCallback
sahte yardımcı sınıfı ekleyin. Geri arama yöntemiyle yapılan aramaları kaydeder ve doğrulama için alınanNavigationEvent
öğelerini saklar. (4a0246) TestNavigationEvent
sahte yardımcı işlevi ekleyerek varsayılan değerlere sahipNavigationEvent
örnekleri oluşturun ve gezinme etkinliği işleme için birim testlerini basitleştirin. (3b63f5)- Test için
TestNavigationEventDispatcherOwner
sahte yardımcı sınıfı ekleyin. Testlerde etkileşim doğrulamayı desteklemek için geri dönüş ve etkinleştirilmiş durum değiştirildi etkinlik sayılarını izler. (c8753e)
API Değişiklikleri
- KMP ortak kodunda kullanılabilir hale getirmek için
NavigationEventInputHandler
öğesiniandroidMain
konumundancommonMain
konumuna taşıyın. Etkinlikleri göndermek için yenipublic send*
yöntemleri ekleyin.NavigationEventDispatcher
'daki gönderme işlevlerinipublic
'daninternal
'ye değiştirin. Kullanıcıların artık etkinlik göndermek içinNavigationEventInputHandler
'ü kullanması gerekir. (Ia7114) NavigationInputHandler
öğesiniOnBackInvokedInputHandler
olarak yeniden adlandırın. (I63405)
Hata Düzeltmeleri
- Ara liste ayırmalarından kaçınarak ve geri çağırma gönderme performansını artırarak ek yükü azaltmak için
NavigationEventDispatcher
öğesini yeniden düzenleyin. (I82702, I1a9d9) - Derleme sırasında geçerli değer aralıklarını zorunlu kılmak ve API güvenliğini artırmak için
NavigationEvent
'dekitouchX
,touchY
veprogress
alanlarına@FloatRange
ek açıklamaları ekleyin. (Iac0ec)
Sürüm 1.0.0-alpha04
2 Temmuz 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04
iptal edilir. 1.0.0-alpha04 sürümü bu commit'leri içerir.
Hata Düzeltmeleri
implementedInJetBrainsFork
,navigationevent-compose
için kullanıldı vecommonStubs
hedefi eklenerek Compose kurallarına uygun hale getirildi. JetBrains tarafından değişiklik istendi. (f60c79)- Doğru saplama oluşturmayı sağlamak için Kotlin/Native'e yönelik Compose derleyici eklentisinin uygulanması düzeltildi. Herkese açık API'ler veya davranışlar etkilenmez. (1890c9)
Sürüm 1.0.0-alpha03
18 Haziran 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03
iptal edilir. 1.0.0-alpha03 sürümü bu commit'leri içerir.
Yeni Özellikler
navigationevent-compose
kitaplığındaki Jetpack Compose özelliklerini desteklemek için yeni birnavigationevent-compose
modülü kullanıma sunuldu.navigationevent
(980d78)NavigationEvent
Compose, yeni birLocalNavigationEventDispatcherOwner
yerel kompozisyon ekledi. Geçerli kompozisyonda kullanılabilir olup olmadığını daha iyi belirlemek için null değer döndürür.NavigationEventHandler
, temel alınan sahip bulunamazsa artık hata verecek. (62ffda)NavigationEvent
Compose, (tahmini geri hareketi) etkinliklerini işlemek için yeni birNavigationEventHandler
Composable ekledi. Sağladığınız askıya alma lambda'sında toplanması gerekenFlow
NavigationEvent
nesnesi sağlar c42ba6:
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
API Değişiklikleri
- Her
NavigationEventCallback
artık aynı anda yalnızca birNavigationEventDispatcher
ile kaydedilebilir. Birden fazla dağıtıcıya eklenmesiIllegalStateException
hatası verir. Bu davranışın, birden fazla göndericiye izin verenOnBackPressedDispatcher
'dan farklı olduğunu unutmayın. (e82c19) - Gezinme sırasında mutasyonu önlemek için
isPassThrough
,val
olarak değiştirildi. Bu durum,NavigationEvent
'nin gönderimini bozabilir. (I0b287)
Sürüm 1.0.0-alpha02
4 Haziran 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02
iptal edilir. 1.0.0-alpha02 sürümü bu commit'leri içerir.
API Değişiklikleri
NavigationEventDispatcher
'nın ikincil oluşturucusunu varsayılan bağımsız değişkenlerle değiştirin. (I716a0)- Öncelikli özelliği
NavigationEventCallback
hesabından kaldırın. Bunun yerineNavigationEventDispatcher.addCallback()
uygulamasına öncelik verin. (I13cae)
Hata Düzeltmeleri
- Kapatılabilir öğelerin dahili listesi eşzamanlı olarak değiştirildiğinden
NavigationEventCallback.remove()
çağrıldığında oluşabilecekConcurrentModificationException
düzeltildi. (b/420919815)
Sürüm 1.0.0-alpha01
20 Mayıs 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01
iptal edilir. 1.0.0-alpha01 sürümü bu commit'leri içerir.
Yeni Özellikler
androidx.navigationevent
kitaplığı, sistem geri ve tahmini geri işlemlerini gerçekleştirmek için KMP öncelikli bir API sağlar.NavigationEventDispatcher
, sistem geri etkinliklerini almak için bir veya daha fazlaNavigationEventCallback
örneğini kaydetmek üzere ortak API'ler olarak işlev görür.- Bu katman,
androidx.activity
içinde daha önce yayınlanan API'lerin altında yer alır ve daha üst düzey bileşenlerde Etkinlik API'lerini kullanmanın veya doğrudan Android çerçevesiOnBackInvokedDispatcher
API'lerini kullanmanın daha az fikir sahibi olunarak yapılabilecek bir alternatifi olmayı amaçlar.androidx.activity
API'leri, Activity 1.12.0-alpha01 kapsamında Navigation Event API'lerinin üzerine yeniden yazıldı.