{"id":30215,"date":"2025-09-25T03:40:20","date_gmt":"2025-09-25T00:40:20","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/"},"modified":"2025-09-25T03:40:20","modified_gmt":"2025-09-25T00:40:20","slug":"android-asynctask-ornegi-egitimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/","title":{"rendered":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi"},"content":{"rendered":"<p># Android AsyncTask: Uygulamal\u0131 Detayl\u0131 Rehber<\/p>\n<p>Android uygulamalar\u0131n\u0131zda uzun s\u00fcren i\u015flemleri ana uygulama thread&#8217;inden ay\u0131rmak ve kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn donmas\u0131n\u0131 engellemek i\u00e7in mi \u00e7\u00f6z\u00fcm ar\u0131yorsunuz?  AsyncTask, bu soruna eski bir \u00e7\u00f6z\u00fcm olsa da, Android&#8217;de uzun s\u00fcreli i\u015flemleri y\u00f6netmek i\u00e7in temel prensipleri anlamak a\u00e7\u0131s\u0131ndan hala de\u011ferli bir ara\u00e7t\u0131r.  Bu makalede, AsyncTask&#8217;in temellerinden ileri d\u00fczey kullan\u0131m\u0131na kadar her \u015feyi kapsaml\u0131 bir \u015fekilde ele alaca\u011f\u0131z.  Yeni ba\u015flayanlar i\u00e7in ad\u0131m ad\u0131m a\u00e7\u0131klamalar, orta seviye geli\u015ftiriciler i\u00e7in ger\u00e7ek d\u00fcnya \u00f6rnekleri ve ileri seviye geli\u015ftiriciler i\u00e7in performans optimizasyonu ve edge case&#8217;ler sunaca\u011f\u0131z.<\/p>\n<p><strong>AsyncTask Nedir ve Ne \u0130\u015fe Yarar?<\/strong><\/p>\n<p>Android uygulamalar\u0131nda, a\u011f istekleri, veri taban\u0131na eri\u015fim veya dosya i\u015flemleri gibi uzun s\u00fcren i\u015flemler ana thread&#8217;de (UI thread) ger\u00e7ekle\u015ftirilirse, uygulama donabilir ve kullan\u0131c\u0131 deneyimi olumsuz etkilenir.  AsyncTask, bu sorunu \u00e7\u00f6zmek i\u00e7in tasarlanm\u0131\u015f, arka planda uzun s\u00fcren i\u015flemleri \u00e7al\u0131\u015ft\u0131rmay\u0131 ve sonu\u00e7lar\u0131 ana thread&#8217;e iletmeyi sa\u011flayan bir yard\u0131mc\u0131 s\u0131n\u0131ft\u0131r.  AsyncTask, <code class=\"language-\">doInBackground()<\/code> metodunu arka planda \u00e7al\u0131\u015ft\u0131r\u0131r ve sonu\u00e7lar\u0131 <code class=\"language-\">onPostExecute()<\/code> metodunu kullanarak ana thread&#8217;e iletir.  Ancak unutmamak gerekir ki, AsyncTask art\u0131k \u00f6nerilen \u00e7\u00f6z\u00fcm de\u011fildir ve Kotlin Coroutines gibi daha modern ve g\u00fc\u00e7l\u00fc ara\u00e7lar tercih edilmelidir.  Ancak AsyncTask&#8217;in \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 anlamak, Android&#8217;de e\u015f zamanl\u0131 programlaman\u0131n temel prensiplerini kavramak i\u00e7in \u00f6nemlidir.<\/p>\n<p><strong>AsyncTask&#8217;i Anlamak: Temel Kavramlar<\/strong><\/p>\n<p>AsyncTask, d\u00f6rt temel ad\u0131mda \u00e7al\u0131\u015f\u0131r:<\/p>\n<p>1. <strong><code class=\"language-\">onPreExecute()<\/code>:<\/strong>  Arka plan i\u015flemi ba\u015flamadan \u00f6nce \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.  Genellikle, progress bar gibi kullan\u0131c\u0131 aray\u00fcz\u00fc \u00f6\u011felerinin ba\u015flat\u0131lmas\u0131 i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>2. <strong><code class=\"language-\">doInBackground()<\/code>:<\/strong>  Arka planda uzun s\u00fcren i\u015flem ger\u00e7ekle\u015ftirilir.  Bu metod, <code class=\"language-\">Params<\/code> t\u00fcr\u00fcnde bir parametre al\u0131r ve <code class=\"language-\">Progress<\/code> t\u00fcr\u00fcnde ilerleme g\u00fcncellemeleri d\u00f6nd\u00fcr\u00fcr.  Sonu\u00e7 olarak <code class=\"language-\">Result<\/code> t\u00fcr\u00fcnde bir de\u011fer d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>3. <strong><code class=\"language-\">onProgressUpdate()<\/code>:<\/strong>  <code class=\"language-\">doInBackground()<\/code> metodu taraf\u0131ndan g\u00f6nderilen ilerleme g\u00fcncellemelerini i\u015fler.  Bu metod, kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>4. <strong><code class=\"language-\">onPostExecute()<\/code>:<\/strong>  <code class=\"language-\">doInBackground()<\/code> metodu tamamland\u0131ktan sonra \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.  <code class=\"language-\">doInBackground()<\/code> metodu taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen sonucu al\u0131r ve genellikle kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc g\u00fcncellemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>Android AsyncTask: Ad\u0131m Ad\u0131m Uygulama (Yeni Ba\u015flayanlar \u0130\u00e7in)<\/strong><\/p>\n<p>\u015eimdi, basit bir \u00f6rnek ile AsyncTask&#8217;i nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 g\u00f6sterelim.  Bu \u00f6rnek, 5 saniyelik bir gecikmeden sonra &#8220;\u0130\u015flem Tamamland\u0131!&#8221; mesaj\u0131n\u0131 ekrana yazd\u0131racakt\u0131r.<\/p>\n<pre class=\"language-java\"><code>import android.os.AsyncTask;\nimport android.os.Bundle;\nimport android.widget.TextView;\n\nimport androidx.appcompat.app.AppCompatActivity;\n\npublic class MainActivity extends AppCompatActivity {\n\n    private TextView textView;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n        textView = findViewById(R.id.textView);\n\n        new MyAsyncTask().execute();\n    }\n\n    private class MyAsyncTask extends AsyncTask&lt;Void, Void, String&gt; {\n\n        @Override\n        protected void onPreExecute() {\n            super.onPreExecute();\n            textView.setText(&quot;\u0130\u015flem Ba\u015flad\u0131...&quot;);\n        }\n\n        @Override\n        protected String doInBackground(Void... voids) {\n            try {\n                Thread.sleep(5000); \/\/ 5 saniye bekle\n            } catch (InterruptedException e) {\n                e.printStackTrace();\n            }\n            return &quot;\u0130\u015flem Tamamland\u0131!&quot;;\n        }\n\n        @Override\n        protected void onPostExecute(String result) {\n            super.onPostExecute(result);\n            textView.setText(result);\n        }\n    }\n}<\/code><\/pre>\n<p>Bu kodda, <code class=\"language-\">MyAsyncTask<\/code> s\u0131n\u0131f\u0131 <code class=\"language-\">AsyncTask<\/code> s\u0131n\u0131f\u0131ndan t\u00fcretilmi\u015ftir ve d\u00f6rt temel metodu override etmektedir.  <code class=\"language-\">doInBackground()<\/code> metodu 5 saniyelik bir gecikme olu\u015fturur ve &#8220;\u0130\u015flem Tamamland\u0131!&#8221; mesaj\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.  <code class=\"language-\">onPostExecute()<\/code> metodu bu mesaj\u0131 <code class=\"language-\">TextView<\/code>&#8216;a yazar.  Bu basit \u00f6rnek, AsyncTask&#8217;in temel kullan\u0131m\u0131n\u0131 g\u00f6stermektedir.<\/p>\n<p><strong>Ger\u00e7ek D\u00fcnya Senaryosu: \u0130nternetten Veri \u00c7ekme (Orta Seviye)<\/strong><\/p>\n<p>\u015eimdi daha ger\u00e7ek\u00e7i bir senaryo ele alal\u0131m:  Bir web servisinden veri \u00e7ekme.  Bu \u00f6rnekte, bir JSON API&#8217;sinden veri \u00e7ekecek ve bu veriyi kullan\u0131c\u0131 aray\u00fcz\u00fcnde g\u00f6sterece\u011fiz.  Bu \u00f6rnekte, a\u011f i\u015flemlerinin ana thread&#8217;de yap\u0131lmamas\u0131 ve olas\u0131 hatalar\u0131n ele al\u0131nmas\u0131 \u00f6nemlidir.  Ayr\u0131ca, performans optimizasyonu i\u00e7in  <code class=\"language-\">runOnUiThread<\/code> metodunu kullanarak UI g\u00fcncellemelerini ana thread&#8217;de yapaca\u011f\u0131z.<\/p>\n<pre class=\"language-java\"><code>\/\/ ... (\u00f6nceki kodlar) ...\n\nprivate class DownloadDataTask extends AsyncTask&lt;String, Void, String&gt; {\n    @Override\n    protected String doInBackground(String... urls) {\n        \/\/ ... (veri \u00e7ekme i\u015flemi burada yap\u0131l\u0131r.  HttpURLConnection veya Retrofit kullan\u0131labilir) ...\n        return &quot;\u00c7ekilen Veri&quot;; \/\/  Ger\u00e7ek veriler burada gelecek\n    }\n\n    @Override\n    protected void onPostExecute(String result) {\n        runOnUiThread(() -&gt; textView.setText(result));\n    }\n}\n\n\/\/ ... (kullan\u0131m \u00f6rne\u011fi) ...\nnew DownloadDataTask().execute(&quot;http:\/\/www.example.com\/api\/data&quot;);<\/code><\/pre>\n<p>Bu \u00f6rnekte,  <code class=\"language-\">DownloadDataTask<\/code> s\u0131n\u0131f\u0131, verileri bir URL&#8217;den \u00e7eker ve <code class=\"language-\">onPostExecute()<\/code> metodunda <code class=\"language-\">runOnUiThread<\/code> ile g\u00fcvenli bir \u015fekilde UI&#8217;\u0131 g\u00fcnceller.  Bu \u00f6rnek, hata y\u00f6netimi ve performans optimizasyonu i\u00e7in daha geli\u015fmi\u015f teknikler gerektirir.  <code class=\"language-\">fatihsoysal.com<\/code> sitesinde bu konulara dair daha detayl\u0131 \u00f6rnekler bulabilirsiniz.<\/p>\n<p><strong>AsyncTask Performans Optimizasyonu ve \u0130leri D\u00fczey Konular<\/strong><\/p>\n<p>AsyncTask kullan\u0131rken performans\u0131 optimize etmek i\u00e7in birka\u00e7 \u00f6nemli nokta vard\u0131r:<\/p>\n<p>* <strong>Thread Pool&#8217;u Anlamak:<\/strong> AsyncTask, kendi thread pool&#8217;unu kullan\u0131r. Bu pool&#8217;un boyutu s\u0131n\u0131rl\u0131d\u0131r ve \u00e7ok fazla AsyncTask \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, performans sorunlar\u0131 ya\u015fayabilirsiniz.  \u00c7ok say\u0131da arka plan i\u015flemi i\u00e7in, <code class=\"language-\">ExecutorService<\/code> gibi daha geli\u015fmi\u015f thread y\u00f6netimi ara\u00e7lar\u0131n\u0131 kullanmak daha etkili olacakt\u0131r.<\/p>\n<p>* <strong>UI G\u00fcncellemelerini Ana Thread&#8217;de Yapmak:<\/strong>  <code class=\"language-\">runOnUiThread()<\/code> veya <code class=\"language-\">Activity.runOnUiThread()<\/code> metodlar\u0131n\u0131 kullanarak UI g\u00fcncellemelerini ana thread&#8217;de yapman\u0131z gerekmektedir. Aksi takdirde uygulama \u00e7\u00f6kebilir.<\/p>\n<p>* <strong>Bellek Y\u00f6netimi:<\/strong>  AsyncTask&#8217;te b\u00fcy\u00fck miktarda veri i\u015fliyorsan\u0131z, bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nlemek i\u00e7in dikkatli olmal\u0131s\u0131n\u0131z.  <code class=\"language-\">WeakReference<\/code> kullanarak nesnelerin referanslar\u0131n\u0131 y\u00f6netmek faydal\u0131 olabilir.<\/p>\n<p>* <strong>\u0130ptal Etme:<\/strong> AsyncTask&#8217;leri <code class=\"language-\">cancel(true)<\/code> metodu ile iptal edebilirsiniz.  <code class=\"language-\">isCancelled()<\/code> metodu ile AsyncTask&#8217;in iptal edilip edilmedi\u011fini kontrol edebilirsiniz.<\/p>\n<p><strong>AsyncTask&#8217;in S\u0131n\u0131rlamalar\u0131 ve Alternatifleri<\/strong><\/p>\n<p>AsyncTask, basit arka plan i\u015flemleri i\u00e7in kullan\u0131\u015fl\u0131 olsa da, baz\u0131 s\u0131n\u0131rlamalar\u0131 vard\u0131r:<\/p>\n<p>* <strong>Configuration Changes:<\/strong>  Ekran d\u00f6nd\u00fcrme gibi configuration changes&#8217;lerinde AsyncTask otomatik olarak iptal edilebilir.  Bu durumu y\u00f6netmek i\u00e7in <code class=\"language-\">onRetainNonConfigurationInstance()<\/code> gibi metodlar kullan\u0131labilir, ancak bu da karma\u015f\u0131kl\u0131k ekler.<\/p>\n<p>* <strong>Karma\u015f\u0131k \u0130\u015flemler:<\/strong>  \u00c7ok karma\u015f\u0131k veya uzun s\u00fcren i\u015flemler i\u00e7in AsyncTask uygun olmayabilir.  Bu durumlarda, Kotlin Coroutines veya RxJava gibi daha g\u00fc\u00e7l\u00fc ve esnek ara\u00e7lar tercih edilmelidir.  <code class=\"language-\">fatihsoysal.com<\/code> adresindeki makalelerde bu konular hakk\u0131nda daha fazla bilgi bulabilirsiniz.<\/p>\n<p>* <strong>Esneklik:<\/strong> AsyncTask&#8217;in ya\u015fam d\u00f6ng\u00fcs\u00fc, Activity veya Fragment&#8217;in ya\u015fam d\u00f6ng\u00fcs\u00fcne s\u0131k\u0131 s\u0131k\u0131ya ba\u011fl\u0131d\u0131r. Bu durum, daha karma\u015f\u0131k senaryolarda y\u00f6netimi zorla\u015ft\u0131rabilir.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular<\/strong><\/p>\n<p>1. <strong>AsyncTask neden art\u0131k \u00f6nerilmiyor?<\/strong> AsyncTask, daha yeni ve daha g\u00fc\u00e7l\u00fc ara\u00e7larla kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda daha az esnek ve daha az y\u00f6netilebilirdir.  Kotlin Coroutines, daha modern ve daha iyi bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p>2. <strong>AsyncTask&#8217;i nas\u0131l iptal ederim?<\/strong> <code class=\"language-\">cancel(true)<\/code> metodunu kullanarak AsyncTask&#8217;i iptal edebilirsiniz.<\/p>\n<p>3. <strong>AsyncTask&#8217;te hata y\u00f6netimi nas\u0131l yap\u0131l\u0131r?<\/strong>  <code class=\"language-\">try-catch<\/code> bloklar\u0131 kullanarak hatalar\u0131 yakalayabilir ve uygun \u015fekilde y\u00f6netebilirsiniz.<\/p>\n<p>4. <strong>AsyncTask&#8217;te ilerleme nas\u0131l g\u00f6sterilir?<\/strong> <code class=\"language-\">onProgressUpdate()<\/code> metodu ile ilerleme g\u00fcncellemeleri g\u00f6sterebilirsiniz.<\/p>\n<p>5. <strong>AsyncTask&#8217;te hangi thread pool&#8217;u kullan\u0131yor?<\/strong> AsyncTask, kendi dahili thread pool&#8217;unu kullan\u0131r, ancak bu pool&#8217;un boyutu s\u0131n\u0131rl\u0131d\u0131r.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# Android AsyncTask: Uygulamal\u0131 Detayl\u0131 Rehber Android uygulamalar\u0131n\u0131zda uzun s\u00fcren i\u015flemleri ana uygulama thread&#8217;inden ay\u0131rmak ve kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-30215","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android AsyncTask \u00d6rne\u011fi E\u011fitimi<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android AsyncTask \u00d6rne\u011fi E\u011fitimi\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-25T00:40:20+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Android AsyncTask \u00d6rne\u011fi E\u011fitimi\",\"datePublished\":\"2025-09-25T00:40:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\"},\"wordCount\":996,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\",\"name\":\"Android AsyncTask \u00d6rne\u011fi E\u011fitimi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-25T00:40:20+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android AsyncTask \u00d6rne\u011fi E\u011fitimi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi","description":"Hi\u00e7bir etiketi bulunamad\u0131.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-25T00:40:20+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi","datePublished":"2025-09-25T00:40:20+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/"},"wordCount":996,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/","url":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/","name":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-25T00:40:20+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/android-asynctask-ornegi-egitimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Android AsyncTask \u00d6rne\u011fi E\u011fitimi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30215"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30215\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}