Metro Stil Bir Uygulamanın Yaşam Hikayesi

   Tüm hızımızla devam ettiğimiz Windows 8 makale serisinde bir önceki makalemizde birlikte Windows 8 için ilk metro stil uygulamamızı geliştirmiştik. Windows 8 ile birlikte tanıştığımız metro stil uygulamalarla ilgili pek çok detay olması nedeniyle adım adım ilerlemenin ve konuya en basitten başlamanın daha doğru olacağını düşünerek “merhaba dünya” uygulamamızı hazırlamıştık. Bu makalemde, geliştirdiğimiz bu basit uygulamanın Windows 8 üzerindeki uygulama yaşam döngüsünü inceleyeceğiz.

   Daha önce de bahsetmiştim, metro stil uygulamalar dokunmatik cihazları hedef almakta, özellikle de giderek daha fazla son kullanıcı tarafından kullanılan tablet cihazları… Tabletleri incelediğimizde de masaüstü ve laptoplara göre daha düşük işlemci, ram ve pil kapasitesine sahip olduklarını rahatlıkla görebiliriz. Bu durumda, tablet cihazlarını bir laptop ile eşit görerek aynı performansı beklemek doğru olmayacaktır. Öte yandan, konuya son kullanıcı bakış açısıyla yaklaştığımızda sistemin her zaman yanıt veren, akıcı ve hızlı olması gerektiğini kabul etmeliyiz. Bu durumda en akıllıca çözüm ise alışa geldiğimiz paralelde ve arka planda çalışan pek çok uygulama olması mantığından uzaklaşmak. Bunun yerine minimum işlemci ve ram kullanımı dolayısıyla da daha uzun bir pil ömrü sunan arayüzde aynı anda tek uygulama çalışmasını sağlanmalı. İşte Windows 8’in yaklaşımı da tam olarak bu, arayüzde aktif tek uygulama… Peki aktif tek uygulama var ise kullanıcı uygulamalar arasında geçiş yaptığında ne yaşanıyor? Uygulama verisi hafızada tutulmuyor ya da son çalıştığı komut seti işlemcide değilse kullanıcı bu uygulamaya geri döndüğünde nasıl kaldığı yerden devam ediyor? ya da uygulama gerçekten de kaldığı yerden devam mı ediyor?

   Windows 8 için geliştirdiğiniz bir Metro stil uygulamanın son kullanıcı bilgisayarındaki yaşam döngüsü uygulamanın kurulumu ile başlar. Windows Store üzerinde bulunan her bir uygulama aslında .appx uzantılı birer uygulama paketidir. Bu paket içerisinde, son kullanıcıda çalışacak uygulamanın ve destekleyici dosyalarının yanında, kurulum ve kaldırma işlemlerinde işletim sistemince kullanılacak olan bir beyan (manifest) dosyası da bulunmaktadır. Detaylarını ilerleyen makalelerimde paylaşacağım bu manifest dosyası aynı zamanda işletim sistemi vasıtasıyla son kullanıcıya erişeceği kaynaklar, talep ettiği yetkiler hakkında bilgi sunacaktır. Bu bilgilendirme doğrultusunda son kullanıcının kurulumu onaylamasıyla birlikte uygulamanız işletim sistemince kurulacak ve yazılımınızın son kullanıcıdaki yaşam döngüsü başlayacaktır.

   İşletim sistemce sınırlı kaynakların yönetimi amacıyla kullanıcının aktif olarak kullanmadığı uygulamaların çalışması tekrar aktif edilene kadar askıya alınabilir ya da son kullanıcı tarafından uygulama sonlandırılabilir. Sistem kaynaklarının batarya ömrü v.b. nedenlerle yetersiz kaldığı durumlarda da uygulamanız son kullanıcı etkileşimi beklenmeden işletim sistemince sonlandırılabilir. Benzer şekilde, son kullanıcının yeniden geçiş yapması ile birlikte uygulamanız kaldığı yerden çalışmasına devam edebilir.

Metro stil uygulamaların Windows 8 üzerindeki yaşam döngüsü ve durum geçişleri

   İşletim sistemince gerçekleştirilen bu geçişler tabi ki veri kaybı olmaması ve yüksek bir kullanıcı deneyimi sunulması adına aktif metro stil uygulamaya da bildirilmektedir. Bu sayede uygulamanız son statüsünü saklayabilmesi yanında kullandığı sistem kaynaklarını da işletim sistemine geri teslim edebilir. Bu sayede serbest bırakılan sistem kaynakları başka uygulamalarca da problemsiz şekilde kullanılabilir. Aşağıda, işletim sisteminin metro stil uygulamaya taşıyacağı durum hakkında bilgi vermekte kullandığı ve Windows.ApplicationModel.Activation namespace’i altında bulunan ApplicationExecutionState enum’nun alabileceği değerleri bulabilirsiniz;

Durum

Değer

Durum Açıklaması

NotRunning – Çalışmıyor

0

Uygulama çalışmıyor

Running – Çalışıyor

1

Uygulama çalışıyor

Suspended – Askıya alındı

2

Uygulama askıda

Terminated – Sonlandırıldı

3

Uygulama askıya alınması sonrası sonlandırıldı

ClosedByUser – Kullanıcı tarafından kapatıldı

4

Uygulama kullanıcı tarafından sonlandırıldı

   Windows 8, durum bildirimlerini yaparken metro stil uygulamaların yapılan işlemi daha iyi anlayabilmeleri adına bir önceki durumları hakkında da bilgi sunmaktadır. Bu sayede uygulamanız, örneğin, çalışıyor durumuna geldiğinde ilk defa mı aktive edildiğini yoksa daha önceden çalıştırılmış olup kullanıcı tarafından yeniden geçiş yapıldığı ayrımını rahatlıkla yapabilir. Bu bildirim ApplicationExecutionState enum’u kullanılarak PreviousExecutionState özelliği üzerinden yapılmaktadır.

   Şimdi sırasıyla uygulamanın yaşam döngüsü boyunca karşılaşabileceği bu durumları inceleyelim;

   Bir uygulama kullanıcı tarafından ilk aktive edildiğinde Çalışmıyor (NotRunning) durumundan gelecektir. Bu durumdaki bir uygulama öncelikle kullanıcıya bir splash screen ile karşılayacak, bu sırada uygulama çalışması için gerekli ilklendirmelerini gerçekleştirmelidir. Bu sürecin sonlanmasıyla birlikte uygulama Çalışıyor (Running) durumuna geçecektir. Akıcı kullanıcı deneyimi sunabilmek adına ilklendirme sürecinin mümkün olduğunca kısa tutulması önemli. Bu noktada düşmem gereken önemli bir not; uygulamalar çalışmıyor durumundan sadece kullanıcının uygulamayı aktive etmesiyle başlamazlar. Örneğin; düşük batarya, yetersiz hafıza alanı ve benzeri sistem kaynaklarının yetersiz kalması nedeniyle uygulama işletim sistemince sonlandırılmış olabilir ya da kullanıcı sunduğunuz bir arayüz üzerinden uygulamanızı sonlandırmış olabilir.

   Windows 8 işletim sisteminde Metro stil uygulamaların çalışmaya başlamasının tek yolu kullanıcı tarafından doğrudan başlatılmaları değildir. Metro stil bir uygulama işletim sistemine sunduğu kontratlar sayesinde de aktif hale gelebilir. İşletim sistemine sunulan bu kontratlar ile çeşitli özel durumlarda uygulamanızın son kullanıcıya hizmet verebileceğini belirtebilirsiniz. Bu özel durumlar belirli bir uzantıya sahip bir dosyanın kullanıcı tarafından açılmak istenmesi olabileceği gibi yine bir dosyanın saklanmak istenmesi, hatta kamera ile fotoğraf çekilmek istenmesi bile olabilir. Tabi bunun olabilmesi için öncelikle uygulamanızın hangi durumlarda aktif hale gelmek istediğini işletim sistemine bildirmesi gerekli. Ancak bu kayıt işlemi ardından uygulamanız Aktive Edildi (Activated) olay bildirimlerini alabilecektir. Aşağıda bir metro stil uygulamasını aktif hale getirebilecek sebepleri bulabilirsiniz;

Aktive edilme Türü

Açıklama

Cached file

Son kullanıcı uygulamanızın yönetebildiği bir dosya türünü saklamak istemiştir

Camera

Son kullanıcı kamerayla görüntü ya da video kaydetmek istemiştir

Contact picker

Son kullanıcı bir bağlantı/irtibat seçmek istemiştir

Device

Sisteme yeni bağlanan bir cihaz nedeniyle açılan otomatik oynat seçeneğinde son kullanıcı uygulamanızı seçmiştir

File

Bir uygulama sizin uygulamanızca yönetebilen bir dosya türünü tetiklemiştir

File open picker

Son kullanıcı uygulamanızca sunulan dosya ya da klasörleri seçmek istemiştir

File save picker

Son kullanıcı bir dosyayı uygulamanız vasıtasıyla saklama istemiştir

Launch

Son kullanıcı uygulamanızı başlatmıştır

Print task

Son kullanıcı bir dokümanı uygulamanız vasıtasıyla yazdırmak istemiştir

Protocol

Uygulamanızca yönetilen bir url son kullanıcı tarafından tetiklenmiştir

Search

Son kullanıcı uygulamanızı kullanarak bir arama işlemi yapmak istemiştir

Share target

Son kullanıcı uygulamanızı kullanarak bir paylaşım gerçekleştirme istemiştir

   Sunulan bu kontratların tek görevi uygulamanızı ilgili olaylarda aktive etmek değildir. Geliştirilen bu mimari sayesinde Windows 8 işletim sistemi üzerinde çalışan tüm metro stil uygulamalar birbirlerine bir bütünün parçası gibi bağlanabilmektedirler. Örneğin; kamera ile çektiğiniz bir resmi grafik işleme programına aktararak düzenleyebilir; düzenleme sonucunu  oluşa resmi de twitter üzerinden takipçileriniz ile paylaşabilirsiniz.

   Bu mimari sayesinde son kullanıcı daha yüksek bir uygulama deneyimi yaşarken bizlerin geliştirdiği metro stil uygulamalarda diğer uygulamalarla birlikte çalışması nedeniyle toplamda daha yüksek bir katma değere sahip olabilecek, son kullanıcılar tarafından daha fazla talep edileceklerdir.

   Kullanıcının bir başka uygulamaya geçiş yapması ya da yetersiz sistem kaynakları nedeniyle uygulamanız Askıda (Suspended) durumuna geçecektir.Bu durumda metro stil uygulamadan beklenen kullandığı sistem kaynaklarını bırakarak bir başka uygulamanın kullanabilmesine izin vermesidir. Uygulamanızda bu duruma geçişten haberdar olmak isterseniz askıya alınmadan hemen önce tetiklenen Suspending olay bildirimini dinlemeniz gerekli.

   Askıda kalma durumu ile ilgili olarak bilinmesi gereken üç önemli nokta bulunuyor;

  • Kullanıcının bir başka uygulamaya geçiş yapması durumunda işletim sistemi uygulamanızı askıya alma için yaklaşık 10 saniye bekler. Bu yaklaşımdaki amaç, kullanıcıların kullanım alışkanlıklarından yola çıkarak, kimi durumlarda kısa süreli olarak uygulamalar arasında yapılan geçişlerde uygulamayı askıya alıp yeniden çalışıyor durumuna geçiş yaptırarak bir performans kaybı yaşanmasının önüne geçilmesidir. Bir kaç saniyelik bu güvenlik payı kullanıcı tepkisini görebilmek amaçlıdır. Bu süre içerisinde uygulamanız Çalışıyor (Running) durumunda bir değişiklik olmayacaktır, dolayısıyla da Suspending olay bildirimi bu süre dolup işletim sistemi uygulamanızı askıya almaya karar verinceye kadar tetiklenmeyecektir. Herhangi bir iş kuralı nedeniyle bu geçişten haberdar olmak isterseniz VisibilityChanged olay bildirimi dinlemelisiniz.
  • Askıda durumuna geçişte tetiklenen Suspending olay bildirimi ile yapılan işlemler mümkün olduğunca kısa sürede tamamlanmalıdır; çünkü bu olay bildirimine 5 saniye içerisinde yanıt verilerek işlemler tamamlanmaz, fonksiyondan geri dönülmez, ise işletim sistemi uygulamanın yanıt vermeyi kestiğini varsayarak uygulamayı sonlandıracaktır.
  • Askıya alınan uygulamalar hızlı yanıt verilebilmesi adına hafızada tutulmaktadır; fakat özellikle tablet cihazlarda kısıtlı bir hafızaya sahip olduğumuzu düşünecek olursak bu her zaman için mümkün olmayacaktır. Dolayısıyla askıda kalan tüm uygulamalara yetecek bir hafıza alanı bulunmaması durumunda işletim sistemi kimi uygulamaları sonlandıracaktır. Böylesi bir sonlandırma işleminde uygulamanızın veri kaybı yaşamaması adına Suspending olay bildiriminde verilerimizi saklamamız önemlidir. Uygulamamız yeniden aktif hale getirildiğinde çalışmasına kaldığı yerden devam edebilmesi için Suspending olay bildirimde sakladığı verileri kullanabilir.

   Bir uygulama Askıda durumuna alınması ardından kullanıcı tarafından ya da sunduğu bir kontrat nedeniyle etkinleştirilerek Çalışıyor durumuna gelebilir. Sadece aktif olarak hafızada kalan uygulamaların Askıda durumunda kalmaya devam edebilmesi nedeniyle, Askıda durumundan Çalışıyor durumuna geçiş yapan bir uygulamada bir veri kaybı söz konusu değildir. Bununla birlikte uygulama Askıda çok uzun süre kalmış olabileceği için kontrol etmesi gereken cihaz ve kaynak durumları olabilir. Böylesi bir gereksinimi olan uygulamalar Resuming olay bildirimini dinleyerek gerekli işlemleri ve kontrolleri gerçekleştirebilirler. Kullanıcı tarafından yeniden aktif hale gelen uygulamalardan farklı olarak Askıda iken bir kontrat ile aktif olan uygulamalar ek olarak Activated olay bildirimini de alacaklardır.

Info

   Güncelleme, 25 Eylül 2012 : Windows 8 ile birlikte tanıştığımız ve uzun süre Metro Stil (Metro Style) olarak andığımız/anmaya alıştığımız bu uygulama türünü ilerleyen makalelerimde Windows Store apps (Windows Mağazası uygulamaları) olarak göreceksiniz

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

2 yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir