میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

پردازش پس زمینه ای در اندروید

در حالت پیش فرض، یک اپلیکیشن اندرویدی در thread اصلی اجرا می شود. از اینرو تمامی دستورات به صورت پشت سرهم (خط به خط) و طبق یک ترتیب خاص اجرا می شوند. در چنین وضعیتی ، اگر اپلیکیشن یک فرایند طولانی را راه اندازی کند، اپلیکیشن تا زمانی که عملیات مزبور به اتمام نرسیده، ( thread اصلی مسدود شده) قادر به پردازش درخواست دیگری نخواهد بود.

به منظور ارائه ی تجربه ی کاربری بهینه ، تمامی عملیات کند و طولانی می بایست در اپلیکیشن اندرویدی به صورت ناهمزمان ( async ) اجرا شوند. برای نیل به این هدف می توانید از ساختارهای مدیریت همروندی ( concurrency ) جاوا یا چارچوب نرم افزاری ( framework ) اندروید استفاده نمایید. از عملیات کند می توان به پردازش های مربوط به اینترنت، فایل و دسترسی به داده از دیتابیس و محاسبات پیچیده اشاره کرد.

نکته: در اندروید چنانچه یک activity قادر نباشد با گذشت مدت ۵ ثانیه از درخواست کاربر ، پاسخ مناسب را ارائه دهد، سیستم بلافاصله یک پنجره محاوره ی حاوی پیغام (Application not responding (ANR را به نمایش می گذارد. در این پنجره کاربر می تواند با انتخاب گزینه ی مربوطه، اپلیکیشن را کاملا متوقف کند.


Thread اصلی یا UI thread 

اندروید تمامی تسک ها و رخدادهای ورودی را در یک thread واحد به نام UI thread یا main thread مدیریت می نماید. در واقع سیستم اندروید تمامی رخدادها را در این ،thread داخل یک صف جمع کرده و سپس event های قرار گرفته در این صف را با کمک نمونه ای از کلاس Looper پردازش می نماید. لازم به ذکر است که thread اصلی نمی تواند چندین عملیات را اداره کرده و در لحظه می تواند تنها یک رخداد ورودی را پردازش کند.

thread

 


پردازش ناهمزمان و استفاده از thread ها در اندروید

اندروید برای پردازش async و ناهمزمان از کلاس Thread و جهت پردازش همزمان چند عملیات در پس زمینه پکیج java.util.concurrent را در اختیار توسعه دهنده قرار می دهد. این پکیج کلاس های ThreadPools و Executor را برای پردازش پس زمینه فراهم می نماید. در صورت نیاز به آپدیت UI از یک Thread دیگر، لازم است با main thread همزمانی انجام دهید. به خاطر وجود این محدودیت ها، توسعه دهندگان اندروید اغلب از کدها و ساختارهای اختصاصی خود اندروید بهره می گیرند.

اندروید تعدادی ساختار ویژه جهت مدیریت همروندی (انجام چند پردازش در پس زمینه) ارائه می دهد که جدا از کدهای جاوا است.

از ساختارهای اختصاصی خود اندروید می توان از کلاس های android.os.Handler یا AsyncTasks نام برد. روش های پیچیده تری ویژه ی مدیریت همروندی وجود دارد که لازمه ی آن، استفاده از کلاس retained fragment ،Loader ها و سرویس ها است.

توجه: تا حد امکان از بکار بردن پنجره ی ProgressBar یا روش های مشابه که تعامل با UI را تا اتمام فرایند معینی مسدود می کند، خودداری نمایید. توصیه می شود برای این منظور یک توضیح مختصر UI همچنان قابلیت تعامل با کاربر را داشته باشد.

 


ارائه ی feedback و توضیح مختصر برای کاربر در طول اجرای عملیات طولانی

در طول اجرای عملیات طولانی، بهتر است توضیح مختصری در خصوص این عملیات برای کاربر به در حالت پیش فرض، یک اپلیکیشن اندرویدی در thread اصلی اجرا می شود. از اینرو تمامی دستورات به صورت پشت سرهم (خط به خط) و طبق یک ترتیب خاص اجرا می شوند.بگذارید. می توانید این توضیحات را در قالب action bar یا action view در UI به نمایش بگذارید. روش دیگر این است که یک ProgressBar در layout تعریف کرده، آن را بر روی visible تنظیم نمایید و سپس در طول اجرای عملیات بروز رسانی کنید. هرچند توصیه می شود از روش اول استفاده نمایید چرا که در آن صورت ارتباط کاربر با UI قطع نمی شود و اپلیکیشن همچنان responsive می ماند.

 


امیدواریم آموزش پردازش پس زمینه ای در اندروید نیز برای شما مفید واقع شده باشد و ادامه آموزش برنامه نویسی اندروید رو دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟