22 Temmuz 2014 Salı

Android İçin Dependency Injection Çözümü: Dagger


Selam,

Yazılım pattern'leriyle ilgileniyorsanız mutlaka duymuşsunuzdur dependency injection kavramını. Özünde bu desenin amacı; yazılım birimlerinin birbiriyle gevşek bağlı(loosely coopled) olmasını sağlamaktır ki bu sayede birimlerin birinde meydana gelen değişim diğer birim(ler)in de değiştirilmesini gerektirmez ve değişime daha açık bir yapı kurgulamış olursunuz. (bkz. SOLID Open-Closed ve Inversion of Control)

17 Temmuz 2014 Perşembe

Android Eventbus(Otto) Kullanımı


Geliştirme yaparken yazdığınız sınıfların bağımlılıklarının düşük olması önemli bir kriter, bu sayede kurduğunuz yapı kolay genişletilebilir, test edilebilir ve yeniden kullanımı kolay bir hal alır. Sınıflar arasında  bağımlık genelde interface'ler kullanılarak düşük tutulur. Ancak bu yaklaşımın olumsuz yanı callback'ler vs.'den kaynaklanan boilerplate code. Fakat biz publisher-subscriber(observer) mekanizmasını kullanarak hem gevşek bağlı(loose coupling) birimler oluşturup hem de boilerplate code problemini kotarabiliriz. Bu noktada piyasadaki eventbus kütüphanelerinden faydalanabilirz.

11 Temmuz 2014 Cuma

Android DatePickerDialog'daki DayPicker'i Gizleme


Merhabalar,

Android'de ekranda fazla yer kaplamadan kullanıcıdan tarih bilgisi almanın yolu, içerisinde tarih seçicisi bulunduran DatePickerDialog'dan geçer. Bu dialog tipi içerisinde DatePicker komponentini barındırarak gün, ay ve yıl spinner'larıyla tarih seçme işlemini kolaylaştırır.

25 Nisan 2014 Cuma

Daha Okunabilir Kod ve Yaşanabilir Dünya İçin Enum'lar

Selamlar,

Enum(Enumaration) tanımlamaları programlama dillerinde belirli değerlere karşılık gelen sabit değerlerin temsili için kullanılırlar, haftanın günleri, yönler vs gibi. Geliştiriciye sağladığı faydalar ise kod okunabilirliğini arttırması, muhtemel değer kümesinin daraltılması ve tip güvenliğini sağlaması dolayısıyla hata payını en aza indirmesi. Ben enumları java dili üzerinden ele alacağım; enum sabiltleri java'ya jdk 1.5 sürümü ile eklenmiştir, ayrıntılar için buraya tıklayınız. Daha öncesinde enum'un üstelendiği görev constant'lar ile kotarılıyordu. "Peki o zaman ne gerek vardı dile enum tipini eklemeye?" diye sorabilirsiniz, ilerleyen bölümlerde sebeplerini açıklıyor olacağım, şimdilik okunabilirlik tarafıyla devam edelim.

17 Nisan 2014 Perşembe

Çok Parametre Alan Metotlar ve Builder Pattern


Merhaba Arkadaşlar,

Bildiğiniz üzere java'da optional parameter ve named arguments desteği yok dolayısıyla bazen çalıştığımız sınıflar içerisinde çok parametre alan constructor ve metotlarla karşılabiliyoruz, bu da ilgili sınıfın kullanımını ve okunabilirliğini zorlaştıran bir durum. Özellikle nesne inşası sırasında istenen parametrelerden çoğu kez 2-3 tanesi bizi ilgilendiriyor fakat ihtiyaç duyduğumuz parametreler için uygun overload olmaması yüksek ihtimal, üstelik ilgi parametrelerin çeşitli kombinasyonları için overlaod'lar yazmak başlı başına bir yük.

24 Mart 2014 Pazartesi

Widget'i AlarmManager'la Yenileme


Herkese Selam,

Bildiğiniz gibi android widget yenileme sıklığı(updatePeriodMillis), batarya ömrünü uzun tutmak adına minimum 30 dk ile sınırlı. Fakat gün geldi bir sebepten daha düşük periyotta widgeti yenileme ihtiyacınız oldu, nasıl bir çözüm giderdiniz? Bu durumda biraz düşününce eminim aklınıza AlarmManager sınıfını bu iş için kullanmak gelecektir.

12 Mart 2014 Çarşamba

Android Service'den Activity'e Deger Dondurme (Haberlesme)


Merhaba Arkadaşlar,

Android komponentleri arasında haberleşme genellikle intent'ler üzerinden gerçekleşir. Intent tipinin bol overload'lu putExtra() metoduyla, primitive tipler veya kendi oluşturduğunuz sınfların serilize edilebilir(parcelable, serializable) nesne örnekleri, iki android komponenti arasında taşınmasıyla haberleşme sağlanmış olur. Misal activity içerisinden service başlatırken intent ile service'e bir takım veriler aktarılabilir. Ne var ki aksi yönde bir iletişim bu denli basit değildir, zira service'ler genelde artalanda takılan ve önyüzle mümkün mertebe muhattap olmayan gizli kahramanlardır.