Android Programlama - AsyncTask ve Arka Plan İşlemleri

Başlatan Fuul oyun, 12 Nisan 2016, 03:42:13

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.


                        
Android uygulamalarında en çok karşılaştığımız hatalardan biri olan "Kapatmaya zorla" hatasının temel sebebini ve nasıl çözebileceğimizi inceleyeceğiz bu yazıda. Bu hata gerçekten bir çok kullanıcı açısından sinir bozucu bir hatadır. En gerekli anda uygulamanın kapatmaya zorla hatası vermesi uygulamanızın itibarı açısından hiçte iyi olmayacaktır.
   
   Peki nedir bu hataya yol açan temel sebep ? Temel sebep dememden kasıt, bu hatanın sadece bu yazıda anlatılacak kısımdan ibaret olmamasıdır. Bir çok durumda karşımıza çıkan bu hatanın en çok karşımıza çıktığı sebebi ele alacağım. Diğer sebepler ise ayrı bir yazı konusu olabilir
   
   Android 4.0 güncellemesinden sonra sistem uzun sürecek işlemleri uygulamanın ana thread'inde yapmaya izin vermiyor. Telefon özelliklerinin de gelişmesi ve güçlenmesiyle artık aynı anda bir çok işlemi yapmaya olanak sağlandı. Bu aslında bir çok açıdan daha verimli bir çalışma ve geliştiriciye daha çok kontrol imkanı sağlıyor. Peki ne yapacağız ?
   
   AsyncTask denilen yapı burada imdadımıza yetişiyor. AsyncTask uygulama çalışırken arka planda istediğimiz işlemleri yapabildiğimiz bir mekanizma. Uygulamanın çalışmasına herhangi bir etkisi olmamakla birlikte aslında kullanıcınında bilgilendirilmesi açısından oldukça güzel bir yöntem.
   
   Arka planda yapılacak işlemlere basit örnekler vermek gerekirse, web servislerinden veri çekmek, login işlemleri, download işlemleri ya da uzun sürecek matematiksel işlemlerdir. Bunların sayısını arttırmak tabiki mümkün ben sadece kafanızda fikir oluşması açısından bu örnekleri verdim.
   
   Şimdide AsyncTask nasıl kullanılır, ne gibi güzellikleri var bunu inceleyelim.
   
   AsyncTask temelde 3 kısımdan oluşur.
   
   - onPreExecute()
   - doInBackground()
   - onPostExecute()
   
   onPreExecute arka plan işlemi başlamadan önce uygulamanın ana thread'inde yapılacak güncellemeler ve kullanıcıyı bilgilendirmek için kullanılır. Mesela uzun sürecek bir işlem var ise kullanıcıya bir "Yükleniyor..." mesajı göstermek için kullanılır.
   
   doInBackground arka planda yapılacak işlemlerin kodlandığı kısımdır. Bu kısımda dikkat edilmesi gereken önemli bir nokta var, burada uygulamanın ana thread'ine erişmek, arayüzü güncellemek gibi işlemler yapılamıyor. Bu kısımda sadece arka planda ne iş yapılacaksa o yapılır.
   
   onPostExecute arka planda yapılan iş tamamlandıktan sonra çalışır. Bu kısımda uzun sürecek işlemimiz bitmiştir ve ana thread'i işlem sonucuna göre güncelleyebilir kullanıcıya gösterilmek istenenler gösterilebilir.
   
   Bu kısımlar hakkında bilgi sahibi olduk şimdide basit bir şekilde nasıl kullanılacağına bakalım.
   
   
[Seç][/url]public class asyncTaskOrnek extends AsyncTask<String,String,String>
   <> işaretleri arasında 3 adet "String" görüyorsunuz. 1.si bu asynctask ın alacağı parametrenin türüdür. 2.si bu asynctask içinde işlem görecek değişkenin türüdür. 3.sü ise bu işlem sonucunda ortaya çıkan olan sonucun türüdür. Bunları isteğinize göre değiştirmek mümkündür. Örnek vermek gerekirse şu şekilde olabilir <String,String[],String[][]> tamamen sizin yapacağınız işleme göre değişkenlik gösterir.
   
   
[Seç][/url]private ProgressDialog dialog = new ProgressDialog(Anasayfa.this);
   Bir adet progress dialog tanımlıyoruz ki arka plan işlemimiz başlayıp sonuçlanana kadar kullanıcıya "Yükleniyor..." bilgisini gösterebilelim.
   
   
[Seç][/url]@Override
          protected void onPreExecute() {
             dialog.setMessage("Yükleniyor...");
             Linklerin Görülmesine İzin Verilmiyor Üye ol Veya Giriş Yap();
          }
   progress dialoga "Yükleniyor..." mesajını verdik ve kullanıcıya göstermeye başladık. Daha sonra onPostExecute içinde yani arka plan işlemi sonlandığında bu dialogu kaldıracağız.
   
   
[Seç][/url]@Override
         protected String doInBackground(String... params) {
            //Bu kısımda herhangi uzun sürecek bir işlem yapılır.
              // Bu işlem sonucunda mutlaka bir sonuç return edilmelidir.
            return UzunIslemSonucu;
         }
   Bu kısımda arka planda yapılacak işlemi yapıyoruz ve onPostExecute methodunda kullanılmak üzere bir sonuç return etmemiz gerekiyor.
   
   
[Seç][/url]protected void onPostExecute(String UzunIslemSonucu){
            ornekText.setText(UzunIslemSonucu);
            dialog.dismiss();
         }
   Bu kısımda işlem sonucu oluşan bir string değeri arayüz üzerindeki bir textView e atadık ve kullanıcıya işlemin sonucunu gösterdik. Aynı zamanda "Yükleniyor..." mesajını dismiss() komutuyla ekrandan kaldırıyoruz.
   
   Evet basit bir şekilde AsyncTask kullanımını göstermeye çalıştım. Yapılacak işlemler sırasında kullanıcı ile etkileşim kurma açısından son derece faydalı buluyorum ve sizlere bunu kullanmanızı tavsiye ediyorum.
   
   Şimdi bu arka plan işlemini nasıl çalıştıracağız ona bakalım.
   
   Yapılacak işlem hazır, gerisi tıpatıp fonksiyon çağırmak kadar basit.
   
   
[Seç][/url]new asyncTaskOrnek().execute();
   İşte bu kadar. Uygulamamızın istediğimiz yerinde AsyncTaskımızı bu şekilde çağırabiliriz. Eğer parametre göndereceksek;
   
   
[Seç][/url]new asyncTaskOrnek().execute(parametre);
   şeklinde gönderebiliriz.
   
   Anlatım tamamen bana aittir lütfen paylaşırken kaynak belirtiniz.
   
   Herkese kolay gelsin.
   
   Kaynak: Linklerin Görülmesine İzin Verilmiyor Üye ol Veya Giriş Yap
                     
                  
                  

Linkback: Android Programlama - AsyncTask ve Arka Plan İşlemleri
  • Gösterim 1,836 
  • Android Eğitim
  • 0 Yanıtlar




Paylaş whatsappPaylaş facebookPaylaş linkedinPaylaş twitterPaylaş myspacePaylaş redditPaylaş diggPaylaş stumblePaylaş technoratiPaylaş delicious

Benzer Konular (5)


İçerik sağlayıcı paylaşım sitesi olarak hizmet veren Replikacep.com sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur.Replikacep.com hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.
Footer menü
Hakkımızda
Bize Ulaşın
Biz Kimiz
Hizmetlerimiz