Yaşam döngüsü
Eklentin ne zaman başlar, update ne zaman çalışır, görünüm adaya nasıl gider.
Bir eklenti, betiğin en üst seviyesinde bir kez AdanotchKit.activity({...}) çağırarak kendini kaydeder. Adanotch ardından şu sırayı izler:
- Betik yüklenir; üst seviyedeki kod çalışır.
setup(ctx)bir kez çalışır.- İlk
update(ctx)çalışır ve görünüm adaya gider. - Sonrasında
updateherrefresharalığında, her eylemden, her ayar değişiminden ve herctx.refresh()çağrısından sonra yeniden çalışır.
AdanotchKit.activity<Settings>({
async setup(ctx) {
// Bir kez: olaylara abone ol, zamanlayıcı kur, ilk veriyi hazırla.
},
async update(ctx) {
// Görünümü döndür.
return { compact: { trailing: AdanotchKit.ui.text("42") } };
},
async onAction(action, ctx, value) {
// Bir düğme, anahtar, kaydırıcı, metin alanı ya da liste satırı kullanıldı.
},
async onSettingsChange(ctx) {
// Kullanıcı Ayarlar'da bir değeri değiştirdi; ctx.settings zaten yeni değerleri taşıyor.
},
});Kancalar
Alan
Tür
update ne zaman çalışır
| Tetikleyici | Not |
|---|---|
refresh aralığı | manifest.json'daki refresh ("5s", "10m", "1h"); verilmezse 5 sn. "manual" otomatik çalıştırmaz. |
onAction sonrası | Eylem hata fırlatırsa update çalışmaz. |
onSettingsChange sonrası | Kullanıcı Ayarlar'da bir değeri değiştirdiğinde. |
ctx.refresh() | Olaylardan ve zamanlayıcılardan görünümü tazelemek için. |
Üst üste binen çalışmalar birleşir
Bir update sürerken gelen yeni istekler sıraya girmez; o update bittiğinde bir kez daha çalışır. Yavaş bir fetch sırasında on kez ctx.refresh() çağırmak on istek değil, bir sonraki tur demektir.
Görünümü parça parça değiştirmek: ctx.render
update dönene kadar beklemek istemediğinde (ör. bir zamanlayıcıdan her saniye) ctx.render kullan. Verdiğin anahtarlar değişir, null verdiğin kaldırılır, vermediğin olduğu gibi kalır:
// Yalnız kompakt alanı değiştir; açık kart olduğu gibi kalır.
ctx.render({ compact: { trailing: ui.text("Yükleniyor…", { tone: "secondary" }) } });
// Kartı kaldır.
ctx.render({ expanded: null });Aynı tur içindeki birden fazla render tek mesajda gider. update içinde render çağırıp hiçbir şey döndürmemek de geçerlidir.
Durum nerede yaşar
- Modül değişkenleri (
const history: number[] = []) eklenti süreci yaşadığı sürece kalır. Adanotch yeniden başlarsa, eklenti güncellenirse ya da bir sınır aşılıp süreç yeniden başlatılırsa sıfırlanır. ctx.storagediske yazılır ve yeniden başlatmalardan sonra da durur. Depolama ve ayarlar
Hatalar
updatehata fırlatırsa son görünüm kalır; hata Ayarlar › Eklentiler'de veadanotch devçıktısında kaynak satırıyla görünür.- Bir olay işleyicisinde ya da zamanlayıcıda yakalanmamış hata günlüğe yazılır, eklentiyi durdurmaz.
setupya da yükleme hatası eklentiyi hemen durdurur.- Üst üste üç
updatehatası ya da süreç sınırı aşımı eklentiyi kapatır. Ayrıntılar: Sınırlar.