آموزش WorkManager در اندروید

سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش WorkManager در اندروید می پردازیم از کلاس و کتابخانه Workmanager به منظور زمانبدی کار در اندروید استفاده می شود شاید در قدیم از کلاس Broascast برای این موارد استفاده می شد ولی در api های جدید باید از task scheduler بهینه سازی شده (optimize) استفاده کنیم نحوه کار با این کتابخانه بسیار سخت نیست پیاده سازی آن ساده و فوق العاده کاربردی است در ادامه درباره ی کتابخانه workmanager بیشتر توضیح خواهیم داد با ما همراه باشید.

WorkManager چیست ؟

جایگزینی برای کلاس Broadcast بوده که با Api های جدید و نسخه های جدید اندروید بهتر از قبل کار می کند و هرجور شده کار شما برای شما در background یا Foreground انجام میدهد.

ویژگی های کلاس WorkManager :

  • این کلاس به صورت محدود و آگانه در هر صورت اجرا می شود – constraint-aware execution
  • نیاز ندارد به صورت force اجرا شود و برنامه نویس فقط یکبار آن را برای تمامی گوشی های می نویسد –  backward compatibility
  • این کلاس دارای tasks query است به معنی که شما می توانید بررسی کنید کاری انجام شده است یا خیر – tasks query
  • این کلاس از چرخه کار  پشتیبانی می کند به این معنی که امکان enqueue کردن Task ها در هر لحظه وجود دارد. – task chaining

WorkManager چگونه کار می کند ؟

قبل از اینکه این کد مربوط به این کلاس رو توضیح بدیم کلاس های آن را کمی توضیح خواهیم داد 🙂

 Worker

مشخص می کند که چه کار یا Task ی می خواهد اجرا شود. برای کار با این کلاس باید یک Abstract از آن Extend کنید و کد خود را بنویسید.

WorkRequest

شبیه به کلاس Worker است با این تفاوت که می توان به کلاس یکسری پارامتر نیز پاس داد.

خود Work Request به دو بخش تشکیل می شود :

  • OneTimeWorkRequest : برای انجام کارهای غیر تکراری کاربرد دارد.
  • PeriodicWorkRequest : برای انجام کارهای تکراری کاربرد دارد.

WorkManager

مدیریت مربوط به کلاس Worker ساخت شده را انجام میدهد.

WorkInfo

شامل اطلاعات مختلفی از task است مثلا task انجام شده است , pending است یا در حالت draft به سر می برد.

فلوچارت مربوط به workmanager را در ادامه می توانید ببینید.

برای اینکه از این کتابخانه استفاده کنید اول باید آن را به گریدل اضافه کنید.

پروژه را sync کنید.

در layout فقط یک دکمه و textivew قرار دارد که دکمه notification را ایجاد کرده و textview حالت مربوط به workmanager را نمایش خواهد داد.

پس در activity_main.xml کد های زیر را قرار دهید.

بعد از اینکه کدهای بالا را قرار دادید زمان این است که از کلاس Work یک Extend ایجاد کنیم تا بتوانیم از ویژگی های آن بهره ببریم.

یک کلاس به نام NotificationWorker ایجاد کرده و کدهای زیر را در آن قرار دهید.

کار این کلاس اینکه با استفاده از کلاس Workmanager یک notification برای ما ایجاد می کند.

خب بریم از این کلاس استفاده کنیم.

اول از همه یک instance از کلاس WorkManager میگیریم مثل زیر

بعد از این کلاسی که ساختیم را از نوع OneTimeWorkRequest یا PeriodicWorkRequest تعریف می کنیم. (بالاتر این را توضیح دادیم )

بعد از این کار باید کلاس ساخته شده را برای workmanager خود enqueue کنیم برای همین میام توی رویداد کلیک به صورت زیر می نویسیم.

در ادامه کل کد مربطو به MainActivity.java را قرار می دهیم.

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

موفق و پیروز باشید.

مطالعه بیشتر