Android Launch Mode Nedir?

Erman Derici
Huawei Developers - Türkiye
3 min readNov 8, 2023
Android Tasks

Giriş

Merhaba, hiç Android uygulamanızda aynı aktivite ile arka arkaya karşılaştınız mı? Geri tuşuna basmanıza rağmen aynı aktivete tekrardan karşınıza çıktı mı? Bu makalede bahsettiğimiz durumlardan kurtulmak için çeşitli aktivite launch mode seçeneklerinde bahsedeceğim.

Launch Mode’lardan bahsetmeden önce task dediğimiz şeyin ne olduğunu tekrardan hatırlayalım. Task, bir veya birden fazla aktivitenin bulunduğu ve kullanıcının etkileşime geçtiği bir koleksiyon diyebiliriz. Uygulamanız yeni bir aktivite oluşturduğu zaman, çağırdığı zaman veya yok ettiği zaman ise backstack dediğimiz arkaplanda aktivitelerin sırasını tutan bir liste güncellenir. Bu kavramlar hakkında daha detaylı bilgi için referanslar kısmındaki linklere göz atabilirsiniz.

Developer için beş farklı mod bulunmaktadır:

  • Standard
  • SingleTop
  • SingleTask
  • SingleInstance
  • SingleInstancePerTask
Dört Ana Launch Mode

Aksi belirtilmedikçe bütün aktiviteler Standard olarak oluşturulur.

Standard Mode

Bu mod task içerisinde aktiviteden yeni bir instance daha oluşturur. Bu sebepten aynı aktiviteden ya aynı task ya da farklı tasklarda birden fazla bulunabilir.

<activity android:launchMode="standard">

Örnek olarak 4, A, B, C, D aktivitelerimiz olduğunu varsayalım ve oluşma sıraları şu şekilde olsun:

A -> B -> C -> D

Eğer aktivite B’yi tekrardan oluşturursak task içerisindeki sıra şu şekilde güncellenir:

A -> B -> C -> D -> B aktivite B tekrardan oluşturuldu ve backstack’in en üstüne yerleştirildi

SingleTop Mode

Bu modun standard moddan farkı, singleTop aynı aktiviteyi eğer backstack içinde var ise ve en üstteyse tekrardan oluşturmaz.

<activity android:launchMode="singleTop">

Örnek olarak 4, A, B, C, D aktivitelerimiz olduğunu varsayalım ve oluşma sıraları şu şekilde olsun:

A -> B -> C -> D

Eğer aktivite D’yi tekrardan oluşturursak task içerisindeki sıra şu şekilde güncellenir:

A -> B -> C -> D aktivite D tekrardan oluşturulmadı.

Ama eğer aktivite B’yi oluştursaydık task içerisindeki sıra şu şekilde güncellenicekti:

A -> B -> C -> D -> B aktivite B tekrardan oluşturuldu çünkü backstack’in en üstünde değildi.

SingleTask Mode

Bu mod singleTop modu gibi çalışır, fakat singleTop’tan farklı olarak eğer aktivite stackte var ise üstünde hangi aktivite varsa siler ve aktiviteyi en üste alır.

<activity android:launchMode="singleTask">

Örnek olarak 3, A, B, C aktivitelerimiz olduğunu varsayalım ve oluşma sıraları şu şekilde olsun:

A -> B -> C

Eğer aktivite D’yi oluşturursak task içerisindeki sıra şu şekilde güncellenir:

A -> B -> C -> D aktivite D oluşturuldu.

Eğer aktivite B’yi tekrardan, aktivite D’yi oluşturduktan sonra çağırırsak ise task içerisindeki sıra şu şekilde güncellenir:

A -> B aktivite B eski durumunda tekrarda çağırıldı, backstack’in en üstüne getirildi ve üstünde kalan aktiviteler silindi

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.

<activity android:launchMode="singleInstance">

Örnek olarak 4, A, B, C, D aktivitelerimiz olduğunu varsayalım ve oluşma sıraları şu şekilde olsun:

A -> B -> C -> D

Eğer aktivite D’yi oluşturursak task içerisindeki sıra şu şekilde güncellenir:

Task1: A -> B -> C

Task2: D farklı bir task içerisinde aktivite D oluşturuldu

Eğer aktivite D’yi tekrardan oluşturursak task içerisindeki sıra şu şekilde güncellenir:

Task1: A -> B -> C

Task2: D aktivite D tekrardan oluşturulmadı, çünkü task2 içerisinde zaten vardı ve eski durumunda tekrardan çağırıldı

Peki ya singleInstance modunda olmayan bir aktivite E oluştursaydık?

Task1: A -> B -> C -> E

Task2: D aktivite E task1 içerisinde oluşturuldu

SingleInstancePerTask Mode

Bu mod singleInstance modundan farklı olarak aynı aktivitenin tekrardan farklı tasklarda yaratılmasına imkan sağlar

Sonuç

Bu makalede aktivitelerin launch modlarını birlikte inceledik. Bu modların backstack ve taskları nasıl etkilediğini, bu sayede kullanıcılara kusursuz bir şekilde uygulama içerisinde aktiviteler arasında geçişin nasıl sağlanacağını görmüş olduk.

--

--