AsyncTaskLoader বনাম AsyncTask


129

যেহেতু Honeycombএবং এটি v4 Compatibility Libraryব্যবহার করা সম্ভব AsyncTaskLoader। আমি যা বুঝি সেগুলি থেকে AsyncTaskLoaderস্ক্রিন ফ্লিপের মতো কনফিগার পরিবর্তনের মাধ্যমে বাঁচতে পারে।

এটি AsyncTaskLoaderপরিবর্তে ব্যবহার করার পরামর্শ দেওয়া হয় AsyncTask? ছবিতেও LoaderManagerপাবেন?

তবে কীভাবে এটি সঠিকভাবে ব্যবহার করবেন সে সম্পর্কে আমি কোনও ভাল উদাহরণ (গুলি) পাইনি AsyncTaskLoader। দস্তাবেজগুলিও কোনও উদাহরণ দেয় না। যে কেউ কিছু ভাল উদাহরণ প্রদান করতে পারেন।

উত্তর:


51

আরও তথ্য পেতে আপনার সামঞ্জস্য লাইব্রেরির উত্স কোডটি একবার দেখতে পারেন। কি কি FragmentActivity:

  • একটি তালিকা রাখা LoaderManager'র
  • নিশ্চিত হয়ে নিন যে আপনি যখন আপনার ফোনটি ফ্লিপ করবেন তখন (বা অন্য কোনও কনফিগারেশন পরিবর্তন ঘটে) ব্যবহার করে দৃষ্টান্ত সংরক্ষণ করে destroyed onRetainNonConfigurationInstance()
  • আপনি যখন initLoader()আপনার ক্রিয়াকলাপে কল করবেন তখন ডান লোডারটিকে কিক করুন

LoaderManagerআপনাকে লোডারদের সাথে ইন্টারফেস টু ব্যবহার করতে হবে এবং আপনার লোডার (গুলি) তৈরি করতে প্রয়োজনীয় কলব্যাক সরবরাহ করতে হবে এবং তারা যে ডেটা ফেরত পাঠাবে তা দিয়ে আপনার দৃষ্টিভঙ্গি বিশিষ্ট করবে।

সাধারণত এটি AsyncTaskনিজের পরিচালনার চেয়ে সহজ হওয়া উচিত । তবে AsyncTaskLoaderসঠিকভাবে নথিভুক্ত নয়, সুতরাং আপনার ডক্সের উদাহরণটি অধ্যয়ন করা উচিত এবং / অথবা আপনার কোডটি মডেল করুন CursorLoader


5
আমি এই এক নজর হবে। সম্ভবত এটি সম্পর্কে ভাল উদাহরণগুলি খুঁজে পাওয়া খুব তাড়াতাড়ি AsyncTaskLoaderএবং আরও বিকাশকারীরা এটি ব্যবহার শুরু করলে আরও উদাহরণ আসবে।
OKA

47

যখন AsyncTaskLoader বনাম অ্যাসিঙ্কটাস্কের তুলনা করুন , আপনি যখন জানেন যে আপনি যখন আপনার ডিভাইসের স্ক্রিনটি ঘোরান তখন এটি আপনার ক্রিয়াকলাপটি ধ্বংস করে এবং পুনরায় তৈরি করতে পারে, যাতে এটি পরিষ্কার হয়ে যায় যে নেটওয়ার্কিং লেনদেন চলাকালীন চিত্রটি আপনার ডিভাইসটি ঘোরান:

অ্যাসিঙ্কটাস্ক আবার ব্যাকগ্রাউন্ড থ্রেড হিসাবে পুনরায় সম্পাদন করা হবে এবং পূর্ববর্তী পটভূমি থ্রেড প্রসেসিংটি কেবল অপ্রয়োজনীয় এবং জম্বি ছিল।

AsyncTaskLoader কেবলমাত্র লোডার আইডিতে পুনরায় ব্যবহার করা হবে যা আগে লোডার ম্যানেজারে নিবন্ধভুক্ত হয়, সুতরাং নেটওয়ার্ক লেনদেন পুনরায় সম্পাদন করা এড়াতে হবে।

সংক্ষেপে, AsyncTaskLoader ব্যাকগ্রাউন্ড থ্রেডগুলির সদৃশতা রোধ করে এবং জুম্বি ক্রিয়াকলাপগুলির সদৃশকে দূরীভূত করে


11

AsyncTaskLoader সঞ্চালিত হিসাবে একই ফাংশন AsyncTask , কিন্তু সেটা বেশ ভালো। এটি ক্রিয়াকলাপ কনফিগারেশন পরিবর্তনগুলি আরও সহজে পরিচালনা করতে পারে এবং এটি খণ্ডগুলি এবং ক্রিয়াকলাপগুলির জীবনচক্রের মধ্যে আচরণ করে। সুন্দর জিনিস হ'ল AsyncTaskLoader যে কোনও পরিস্থিতিতে AsyncTask ব্যবহার করা হচ্ছে। ক্রিয়াকলাপ / ফ্রেগমেন্ট পরিচালনা করার জন্য যেকোন সময় ডেটা মেমোরিতে লোড করা দরকার, অ্যাসিঙ্কটাস্কলয়েডার কাজটি আরও ভাল করতে পারে।

অ্যাসিঙ্কটাস্ক ব্যবহার করার ক্ষেত্রে কয়েকটি সমস্যা রয়েছে, যদিও:

  • কনফিগারেশন পরিবর্তনগুলি গোলযোগ করতে পারে
  • কোনও ক্রিয়াকলাপ থামানো অ্যাসিঙ্কটাস্ককে বিরতি দেয় না
  • বয়লারপ্লিট কোডের মোটামুটি পরিমাণ (যার অর্থ আরও বেশি সম্ভাব্য ত্রুটি)

AsyncTaskLoader ডক


8

অন্যান্য উত্তরে বর্ণিত ব্যতীত কিছু পার্থক্য:

অ্যাসিঙ্কটাস্কের উপরে অ্যাসিঙ্কটাস্কলডার ব্যবহার করার সময় :

  • AsyncTaskLoader নতুন ডেটা ফেরত না দেওয়া পর্যন্ত আমাদের পুরানো ক্যাশেড ডেটা লোড করার স্বাধীনতা দেয়forceLoad()

  • আমরা করতে বিলম্ব সেট করতে পারেন AsyncTaskLoader দ্বারা setUpdateThrottle()যা ক্লায়েন্টের সাথে পরপর আপডেট প্রতিরোধ করতে পারি (কার্যকলাপ / অসম্পূর্ণ অংশ)

  • অ্যাসিঙ্কটাস্কলডার একাধিক টুকরোতে ভাগ করা যায় যদি তাদের সাধারণ পিতামাতার ক্রিয়াকলাপ থাকে এবং যদি এটি থেকে শুরু করা হয়েছিলgetActivity().getSupportLoaderManager()

  • AsyncTaskLoaderLoaderManger এর সংযুক্ত কার্যকলাপটি আর উপলভ্য না হয়ে ধ্বংস হয়ে যায় by যদিও এর কলার ক্রিয়াকলাপটি যদি ধ্বংস করে তবে আমাদের ম্যানুয়ালি AsyncTasks ধ্বংস করতে হবে। এটি সমস্ত ক্লিয়ারিং স্টাফ লেখার থেকে আমাদের সময় বাঁচায়। AsyncTaskLoader তাদের নিজ নিজ লাইফসাইকেলের সাথে ভাল অভিনয় করে।

সুতরাং, AsyncTaskLoader AsyncTask এর চেয়ে ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.