29 Aralık 2024 Pazar

Android Uygulamalarında Aktivite Başlatma Modları (Launch Modes)

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 yerine B tekrar başlatılırsa yığın şu hale gelir:

A → B → C → B (yeni kopya)


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:

A → B


4. SingleInstance Mode


Bu mod singleTask modu gibi çalışır, fakat aradaki fark aktivitenin yeni bir taskta oluşturulmasıdır. Oluşan bu aktivitenin bulunduğu task, başka bir aktivite içeremez.

Ö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 mevcut D 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.