MVC, MVP, MVVM


Daha önce Android architecture component hakkında genel bir bilgi toplamaya çalışmıştım. Aslında belki de öncesinde bugünlere nasıl gelindiğiyle ilgili biraz düşünmekte, konuşmakta fayda var.

Android’in tarihi çok eski olmamakla beraber aslında ilk yazmaya başladığımız, henüz herhangi bir library vs kullanmadığımız dönemde her birimiz kendi çözümlerimizi geliştiriyorduk ve paylaşıyorduk. Çoğumuz MVC(Model View Controller) kullanarak başladık. Bu yüzden de MVC’nin nasıl bir pattern olduğunu anlatarak başlamak istiyorum 🙂

MVC‘de; Model data’nın, state’in ve business logic’in tutulduğu yerdir. Controller ve View’e bağlı değildir, böylece tekrar tekrar kullanılabilir. View, ui’ın render edildiği parçadır. Herhangi bir akla sahip değildir. Controller ise view ve model arasında bağlantıyı kuran parçacıktır. Örneğin bir butona tıklandığında ne aksiyon alınacağı bilgisi Controller’dadır. Burada tıklandıldığı bilgisi veren View, yapılacak işi içeren kısım ise Model’dir. Android’de ise Activity ve Fragment’ler Controller’a denk gelir. Okumaya devam et

Mastering in Fragments


Ne kadar çok fragment kullandığınız ya da kaç yıldır Android developer olarak çalıştığınızdan bağımsız olarak, her Fragment kullandığınızda Fragmentle ilgili şaşırtıcı şeyler öğrenebilirsiniz. En azından benim için öyle 🙂 Bazılarınız yazıyı tamamladığınız yaa bunları bilmiyor muydun diyeceksiniz, bazıları ben de çektim evet diyecek ama benim amacım bir gün bunu yaşarsanız yol gösterici olması.

Bugünün konusu ise setUserVisibilityHint methodu. Aslında bakıldığında çok faydalı görünüyor. Fragment’in bize ne zaman visible olduğu/olmadığı bilgisini veriyor. Buna göre sayfanın çizilmesinde aksiyon alabiliriz, bir task başlatıp örneğin data çekeceksek burada yapabiliriz. Böylece optimizasyon sağlayabiliriz. Ama tutorial’da da belirtmiş ki lifecycle’a bağlı olarak Fragment yaratıldıktan sonra çağrılmayabilir. Fragment göründüğü an çağrılacak ancak, önce setUserVisibilityHint methodu sonra onCreate çağrılabilir. Okumaya devam et

Android Instant Apps’e Genel Bakış


Native Android apps that run instantly without installation

Android Instant App’leri ilk duyduğumda tam beklenen şey gelmiş, çok iyi fikir diye düşünmüştüm. Biraz daha derinine inip araştırmamı, merak eden diğer Android Developer’larla da paylamanın zamanı geldi geçiyordu. Yukarıda gördüğünüz gif early adopter’lerden biri olan vimeo’nun Android Instant App’i nasıl kullandığını gösteriyor. Nasıl bir süreç yaşadıklarını detaylı olarak anlatan medium’daki yazılarından aldım. Okumaya devam et

Son Retrospective nasıl olmalı?


Scrum master’ın görevlerinden biri de retro spective’leri facilitate etmek. Retrospective nedir dersek 🙂 aslında sadece scrum team’in katılımıyla o sprint’in nasıl geçtiğinin değerlendirilmesidir diyebiliriz, kısaca. Scrum master olmanın en zor yanlarından biri de belki retrospective’leri her sprint sonunda bir nebze de olsa eğlenceli hale getirmek. Ya bu hafta da yapmasak olmaz mıyı 😀 ilk duyan sanırım ben değilimdir. Ancak tabi her yöntem her takım ya da hafta için uygun olmuyor, bazen biraz evirip çevirmek gerekiyor. Arada scrum.org’un blogunda yazan deneyimli scrum masterlardan biraz kopya çektiğim doğrudur. Konu en sonuncu retro’ya gelince ise işler biraz daha zorlaşıyor.

Yani mevcut takım artık beraber çalışmayacaksa. Belki çok fazla rastlanan bir durum olmayabilir ancak şirketten şirkete değişmekle eminim sık yaşanan durumlar da oluyordur. Alınacak feedbackler bu durumda ekstra değerli oluyor. Bir diğer taraftan takımda yer alan kişilerin burada yer almaktan duyduğu mutluluk/mutsuzluk/kazancı duymak da ayrı değerli.

Peki son retroda neler almak istediklerimizi artık biliyoruz. Ancak konu biraz dağıldı. Bu kadar farklı şeyi bir arada yönetmek zor olabilir. Bir de eğer bir ayrılma durumu olacaksa bu da biraz duygusal bir ortam oluşturacak. Çünkü uzunca bir süre bir arada beraber çalışan bir takım aslında büyük bir aile de olmuş oluyor. Birinin sevinciyle sevinip, diğerinin üzüntüsüyle üzülüyorsunuz. Biri birşey isteyince hepiniz onun için istiyorsunuz falan filan 🙂 Bu durumda yine son retrolarda neler yapılabilir scrum.org’da biraz arıştırıp biraz da kendi takımımızın ihtiyaçlarını göz önünde bulundurarak şöyle bir yol haritası izledim. Sondan 3. retroda takımın tüm süreci ve şirketi değerlendirmesini istedim. Çok faydalı feedbackler aldık. Biz neyi iyi, neyi kötü yaptık, neyi daha iyi yapabilirdik, bu süreçte şirketin neleri nasıl değerlendirdiği uzun uzun tartışıldı. Sondan 2. retroda biraz daha kişisel olarak süreci değerlendirme üzerine gittik. Bir birey olarak takımın her üyesinin bu takıma ne kattığını ve neler alarak ayrılacağını konuştuk. Hepimizin enerjisi çok yükseldi. Özellikle kişinin kendini değerlendirmesi her ne kadar çok zor birşey olsa da bir yandan da moralini arttıran, daha iyi, daha değerli hissettiren bir yaklaşım. Ve ne aldığımızsa tabi herkesin değişir ama bir scrum takımında yer almanın en büyük artısı sanırım aileden kadar yakın hissedebileceğiniz yeni arkadaşlar kazanmak. Şimdi son sprinti koşarken duygusal bir son kapanış retrosu bizi bekliyor. Retrosu yapılmayan sprint bitmezmiş. Artık yemek yerken mi, rakı içerken mi yapılır bilinmez 🙂 Zor bir retro olacağı kesin. İyi hafta sonları!

Android Lifecycle-Aware components


Google I/O’da tanıtılan ve aslında biz Android geliştiricileri oldukça heyecanlandıran en önemli gelişmelerden biri de Lifecyle-Aware Component’lerdi. Ben de yeni hakkında detaylı bir yazma fırsatı bulabiliyorum. 22 Temmuz’da Google Dome’da GDG Istanbul olarak gerçekleştireceğimiz codelab’in konularından biri de bu componentler. Merak edenlerle hep beraber inceleyebiliriz.

Componentlerin detaylarını konuşmaya başlamadan Android Activity Lifecycle’ı bir hatırlamakta fayda var. Aşağıdaki imaj aslında bize tüm akışı özetlemiş oluyor. Activity launch edildiğinde sırasıyla onCreate(Activity’nin yaratıldığı state), onStart(Activity’nin kullanıcıya visible olduğu state), onResume methodları trigger ediliyor ve Activity run edilmiş oluyor. Eğer üzerinde başka bir activity açılırsa, başka bir app’e giderse vs onPause methodu çağrılıyor. Activity sistem tarafından sonlanıyorsa ise onPause ardından, onStop(Activity tamamen görünmez olur) ve onDestroy methodları da tetikleniyor. Okumaya devam et

Google I/O’17 Developer Festival & 1 week with GDGs at SF :)


Uzun ve eğlenceli geçen bir haftanın ardından biraz dinlenip, festival notlarını paylaşmanın zamanı geldi. Ama biraz daha öne gidip, konferans öncesinde Türkiye’deki tüm GDG’ler olarak bir haftayı nasıl geçirdiğimizi de paylaşıyorum (plus) 🙂 Benim için bu yazının en zor yanı, anlatacak fotoğrafları seçmek oldu.

Herkesin bildiği gibi Google I/O 17-18-19 Mayıs tarihlerindeydi. Ama biz GDG’ler için program biraz daha doluydu 🙂

  • 15 Mayıs Pazartesi Akşamı: GDG Dinner Party
  • 16 Mayıs: GDG Summit + WTM Dinner Party
  • 17 Mayıs: I/O 1.gün + I/O Party
  • 18 Mayıs: I/O 2. gün + I/O Konser
  • 19 Mayıs: I/O 3. gün

Okumaya devam et