Etkinlik yapılandırma

Bir etkinlik, durum değişikliklerini tetikler ve işlemleri başlatır. Etkinlikler, Sistem Kullanıcı Arayüzü'nden veya bir amaç kullanılarak işlem dışından gönderilen sinyaller olarak işlev görür. Etkinlikler, ölçeklenebilir kullanıcı arayüzünü yanıt gerektiren olaylar hakkında bilgilendirir.

Ölçeklenebilir kullanıcı arayüzü etkinliği, donanım veya yazılım değişiklikleriyle tetiklenen ve bir panelin durumunu değiştirebilen bir sistem sinyalidir. Bu etkinlikler, kullanıcı arayüzü yanıtı gerektiren durumlar hakkında çerçeveyi bilgilendirir. Panel durumları üzerinde daha hassas kontrol sağlamak için yerleşik sistem etkinliklerine ek olarak özel etkinlikler de tanımlayabilirsiniz.

Etkinliğin yapısı

Zorunlu bir benzersiz tanımlayıcı (kimlik), bir etkinliği tanımlar. Bu kimlik, _System_AppOpenEvent veya _System_PanelEmptyEvent gibi oluşum türünü kategorize eder.

Bu kimliğe ek olarak, bir etkinlik isteğe bağlı olarak jetonlar, anahtar/değer çiftleri taşıyabilir. Bu jetonlar ve anahtar/değer çiftleri, etkinlik hakkında bağlam ve ayrıntılar sağlar. Bu jetonlar, etkinliklerin daha ayrıntılı şekilde filtrelenmesine olanak tanır. Böylece, geçişler veya işlemler yalnızca belirli koşullar altında tetiklenebilir.

Jetonlar, etkinliğe noktalı virgülle (;) ayrılmış anahtar/değer çiftleri listesi olarak iletilir. Sistem tarafından desteklenen anahtarların listesini aşağıda bulabilirsiniz:

Anahtar Açıklama
panelId Etkinlikle ilişkili belirli bir kullanıcı arayüzü panelini tanımlar.
component Etkinliğe bağlı bir etkinlik gibi bileşen adını belirtir.
package Etkinlikle ilgili paket adını gösterir.
panelToVariantId Belirli bağlamlarda bir panelin hedef varyantını belirtir. Bir panel geçişini dinleyerek animasyonları basamaklandırmak için bu özelliği kullanın. Örneğin, A paneli açık duruma geçirildiğinde B paneli geçişini kapalı duruma getirme.

Örneğin:

"component=com.android.app;panelId=panel1"

Etkinlik eşleştirme mantığı

Bir etkinlik gönderildiğinde, geçişi veya işlemi tetiklemek için tanımlı ölçütlerle eşleştirilmesi gerekir. Eşleştirme işlemi iki aşamada gerçekleşir:

  • Katı etkinlik id eşleşmesi: Gönderilen etkinliğin id, geçiş veya işlem etkinliği filtresinde belirtilen id ile tam olarak eşleşmelidir. Kimlikler eşleşmiyorsa etkinlik eşleşme olarak kabul edilmez.

  • Kısmi etkinlik jetonu eşleştirme: Etkinlik kimlikleri eşleştiğinde sistem, bir etkinliğin jetonlarını filtrede tanımlanan jetonlarla karşılaştırarak değerlendirmek için kısmi eşleştirme kullanır.

    Eşleşmenin gerçekleşmesi için geçişin etkinlik tanımında belirtilen tüm etkinlik özellikleri (jetonlar), gönderilen etkinlikteki ilgili özelliklerle tam olarak eşleşmelidir.

    Bununla birlikte, gönderilen etkinlik, filtrede açıkça tanımlanmamış ek jetonlar içerebilir. Ekstra jetonlar eşleşmeyi engellemez. Bunun yerine, eşleşme değerlendirmesinde yok sayılırlar.

    Aksine, filtre gönderilen etkinlikte bulunmayan bir jetonu belirtiyorsa veya eşleşen bir jetonun değeri uyuşmuyorsa eşleşme olarak kabul edilmez.

Örneğin, id="app_open" işlemi component="com.android.myapp.Activity" ile panelId="panel1" üzerinde gerçekleştiğinde tetiklenecek şekilde tanımlanmış bir geçişi ele alalım.

Gönderilen bir etkinlikte id="app_open", panelId="panel1" ve component="com.android.myapp.Activity" varsa eşleşme yapılır. Tüm filtre ölçütleri karşılanır ve Activity value in the dispatched event is considered a match forcom.android.myapp` için daha spesifik değer kullanılır.

Ancak id="app_open", panelId="panel1" ve component="com.android.yourapp.Activity" olduğunda gönderilen etkinlik eşleşmez. id ve panelId eşleşse de geçişteki component eşit değil componentcom.android.myapp — gönderilen etkinlikteki com.android.yourapp ile eşleşmiyor.

Geçiş tetikleyicisi

Bir geçiş eşleşme olsa da tetiklenmeyebilir. Her etkinlik için yalnızca bir geçiş tetiklenebilir. Ölçeklenebilir kullanıcı arayüzü yalnızca en yakın eşleşmeyi tetiklemeyi amaçlar.

Örneğin, biri bileşen adıyla, diğeri bileşen adı olmadan iki geçiş eşleştiğinde -m yalnızca bileşen adıyla yapılan geçiş tetiklenir.

Etkinlik gönderme ve işleme

Etkinlikler, ölçeklenebilir kullanıcı arayüzünün dinamik davranışında merkezi bir rol oynar. Etkinlikler, System UI'den veya harici işlemlerden bir amaçla gönderilebilir.

Sistem etkinlikleri

Çerçeve, bu işlemleri kolaylaştıran çeşitli sistem etkinlikleri tanımlar:

Özellik Açıklama
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
Sistemin Ana ekranı gösterme isteği aldığını belirtir. AAOS'te Ana Sayfa, widget'ların kombinasyonu veya hatta bir harita gibi esnek bir pencere yapılandırması olabilir. Bu etkinlik, kullanıcının birincil ana arayüzü görüntülemesine bağlı olan geçişler veya işlemler için çok önemlidir.
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

Bir görev veya uygulama açıldığında gönderilir. Bu genel etkinlik, bir uygulamanın başlatılmasına bağlı olarak işlemler veya geçişler tetikleyebilir.

Bu etkinlikte panelId ve component gibi jetonlar bulunuyor.

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
Bir görevin veya uygulamanın kapatıldığını gösterir ve _System_TaskOpenEvent öğesinin karşılığıdır. Bu sayede sistem, kapatılan uygulamalara tepki verebilir. Bu, bir paneli varsayılan duruma döndürmek veya diğer temizleme işlemlerini başlatmak için geçişleri tetikleyebilir.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

Belirli bir panel boşaldığında gönderilir ve tetikleyicilerin hangi panelin boş olduğuna göre filtrelenmesi için jeton olarak panelId içerir.

Bu etkinlik, sağlam bir hata kurtarma için ve ilişkili içerik kilitlendiğinde veya beklenmedik şekilde sonlandırıldığında uygulamaları yeniden başlatmak için önemlidir. Böylece boş kullanıcı arayüzü panellerinin gösterilmesi önlenir.

Örneğin, bir ControlBar uygulaması çökerse bu etkinliği panelinde algılayacak ve ControlBar uygulamasını otomatik olarak yeniden başlatacak şekilde yapılandırabilir ve işlem yapabilirsiniz.

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
Sistemin Kurulum Sihirbazı'na (SUW) girdiğini gösterir. Bu etkinlik, sistemin hazır olduğunu gösterir ve sistem başlatıldıktan sonra uygulamaları başlatacak veya belirlenen panelleri görünüme getirecek şekilde yapılandırılabilir. Bu tür kritik bir sistem durumuna girilmesi, uygun kullanıcı arayüzü ayarlamalarını veya işlemleri tetiklemek için özel bir etkinlik gerektirir.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
Sistemin Kurulum Sihirbazı'ndan (SUW) çıktığını gösterir. _System_EnterSuwEvent'ya benzer şekilde bu etkinlik, sistemin kurulum sürecinin tamamlanmasına varsayılan uygulamaları başlatarak veya standart bir kullanıcı arayüzüne geçerek yanıt vermesine olanak tanır.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
Kullanıcı arayüzünde bir animasyon tamamlandığında tetiklenir. Bu etkinliği, görsel geçişin tamamlanmasına bağlı olan sonraki işlemleri veya durum değişikliklerini tetiklemek için kullanabilirsiniz.

Bu etkinlik, animasyonun sonunda panelin hangi varyantla sonuçlandığını belirtmek için variantId jetonunu içerir.