Android Refresh Metodu Nasıl Oluşturulur ve Nasıl Kullanılır ?
Her uygulamada olduğu gibi mobil uygulamalarda da, ister kullanıcı tarafından ister uygulama yöneticisi tarafından belirli aralıklarla uygulamada değişiklikler yapılması istenilir. Genellikle bu değişiklikleri periyodik yenilemeyle gereksinimleri karşılarız. Örneğin, her saniye geri sayan bir zamanlayıcı veya abartmak istersek servisten çağırdığımız herhangi bir api’nin bildirim altyapısını oluşturma örneklerini verebilirim. Aşağıda basitçe kod bloklarımı ve açıklamalarını yapıyor olacağım sizin için en uygun kullanım alanını bulup basitçe uygulamanızda kullanabilirsiniz.
Öncelikle mevcut class’ ımız, activity’ miz veya fragment’ imizin içerisinde parametreli bir refresh metodu oluşturuyoruz.
public void refresh(int miliseconds) {
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
siparisGuncelle();
}
};
handler.postDelayed(runnable, miliseconds);
}
Burada bir parantez açıp public erişim tipinin yeni başlayan arkadaşlarımızın da bilmesi adına ufakça ne işe yaradığını belirtmek isterim. Yazılarımda ara ara erişim belirteçlerine değineceğim.
Public damgası bir değişkeni, sınıfı yada metodu niteleyebilir. Bu nitelenen değişken, sınıf yada metoda herkes tarafından ulaşılabilir. Başka pakette olsa bile , program içerisinde her kod onlara erişebilir. Kısaca dışarda veya içeride tüm başka sınıflar kısıtsız ulaşır.
Java’ da Runnable ve Handler kullanımına oldukça dikkat etmelisiniz. Çünkü anlık yenilenmesi gereken işlemleri oldukça hızlı bir şekilde yapmaya çalışıp uygulamanızın çökmesine (crash) neden olabilir. Runnable işlemleri ardı ardına sıraya ekleyerek bir nevi denetleyici olarak görev yapmaktadır.
Son bir işlemimiz kaldı, servisten çağırdığım bir api’yi uygulamamız içerinde farklı bir metod ile çağırıp içiresinde refresh metodumuzun tüm işlemler bitirildikten sonra çağırılmasını istiyoruz.
public void siparisGuncelle(){
SiparisList siparisList = new SiparisList();
siparisList.setNomId(Globals.getNomNo());
siparisList.setCepDepoId(Globals.getAracNo());
new SiparisGuncelleController(getContext()).siparisListesiGuncelle(siparisList,siparisNo);refresh(1000);}
Javada tüm işlemler yukarıdan aşağıya doğru çalışmaktadır. Servisimizden istenen değişkenleri set ettikten sonra, refresh metodumuz çalışacak. Metodumuz milisaniye cinsinden çalıştığı için 1000 ms. yani 1 sn. olarak girdim.
Kullanımlar bu şekildedir. Umarım yardımcı olabilmişimdir, İyi çalışmalar dilerim.