Android Uygulamalarında Aktivite Başlatma Modları (Launch Modes)
Android uygulamalarında karşımıza çıkan aktivitelerin başlatma modlarından bahsedeceğim. Öncelikle Android sisteminde "task" nedir buna bakarsak, tasklar bir veya birden fazla aktivitenin bulunduğu aktiviteler topluluğu olarak tanımlanabilir. Tasklar bir yığın (stack) üzerinde tutulur ve yeni bir aktivite oluşturulduğunda bu aktivite yığının en sonuna eklenir. Android'in bu yapısı LIFO (Last In, First Out) mantığı ile çalışır.
Bir aktivitenin başlatma modu, bu aktivitenin diğer aktivitelerle olan ilişkisini ve davranışını tanımlar. Android'de toplamda 5 adet başlatma modu bulunur ve bu modlar, manifest dosyasında aktivite içerisinde launchMode
"attribute" ile tanımlanır.
1. Standard Mode (Varsayılan Mod)
Bu mod varsayılan olarak gelir. Yeni bir aktivite başlatıldığında her zaman yeni bir kopya oluşturulur ve yığının en üstünü eklenir.
Örnek: Eğer yığında A ve B aktiviteleri varsa ve B'yi tekrar başlatırsak, yeni bir B kopyası oluşturulur ve yığın şu hale gelir:
A → B → B (yeni kopya)
2. SingleTop Mode
Bu mod, başlatılmak istenen aktivitenin yığının en üstünde olması durumunda yeni bir kopya oluşturmaz. Bunun yerine mevcut aktiviteye yeni bir Intent
gönderir ve onNewIntent()
metodu çalışır. Ancak, aktivite yığının en üstünde değilse yeni bir kopya oluşturulur.
Örnek:
Yığında şu aktiviteler olsun:
A → B → C
.Eğer
C
tekrar başlatılırsa yeni bir kopya oluşturulmaz.Ancak
C
yerineB
tekrar başlatılırsa yığın şu hale gelir:
3. SingleTask Mode
Bu mod, aktivitenin yığında zaten mevcut olup olmadığını kontrol eder. Aktivite yığında mevcutsa, bu aktivitenin üzerindeki tüm aktiviteler temizlenir ve söz konusu aktivite öne getirilir.
Örnek:
Yığın:
A → B → C → D
.Eğer
B
başlatılırsa, yığın şu hale gelir:
4. SingleInstance Mode
Örnek:
Yığın:
Task 1: A → B → C
Task 2: D
Eğer
D
tekrar başlatılırsa, yeni bir kopya oluşturulmaz ve mevcutD
kullanılır.
5. SingleInstancePerTask Mode
Bu mod, SingleInstance
modundan farklı olarak, aynı aktivitenin farklı tasklarda yeniden oluşturulmasına izin verir. Bu sayede her bir task içerisinde aynı aktivitenin farklı kopyaları bulunabilir.