tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            آموزش زمانبندی وظایف با WorkManager در اندروید

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • آموزش زمانبندی وظایف با WorkManager در اندروید
            اضافه کردن دامنه سفارشی و نصب SSL بر روی Localhost
            نحوه اضافه کردن دامنه سفارشی و نصب SSL (HTTPS) بر روی Localhost
            16 فروردین 1398
            ساخت RESTful API در لاراول با Passport
            ساخت RESTful API برای عملیات CRUD در لاراول به همراه احراز هویت با استفاده از Passport
            17 فروردین 1398
            منتشر شده توسط مهندس داودی
            آموزش زمانبندی وظایف با WorkManager در اندروید

            آموزش زمانبندی وظایف با WorkManager در اندروید

            آموزش WorkManager و زمانبندی وظایف با WorkManager در اندروید ، در نسخه های پیشین اندروید ما از Broadcast ها برای زمانبندی وظایف و یا مدیریت تسک های غیر منتظره استفاده میکردیم.
            اما در نسخه های جدید اندروید مبحث دیگری بنام WorkManager ارائه داد که با کیفیت بهتر توانست خود را جایگزین کند که در این آموزش ما به صورت کامل WorkManager را بررسی خواهیم کرد پس با ما همراه باشید 🙂

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

            برای تعریف این مولفه میتوان گفت api های WorkManager برای زمانبندی وظایف یا تسک های ناپیوسته (برای مثال گرفتن دیتا از سرور) و غیرقابل انتظار (برای مثال گرفتن یک نوتیفکیشن خاص) بکار می رود حتی زمانیکه از اپ خارج شده ایم و یا دستگاه ری استارت شده باشد

            ویژگی های کلیدی WorkManager

            • سازگاری با نسخه های ۱۴به بالا
            • استفاده از JobScheduler روی دستگاه های با نسخه ۲۳ به بالا
            • استفاده از ترکیب ‌BroadcastReceiver + AlarmManager برروی دستگاه های ۱۴ تا ۲۲
            • قابلیت اضافه کردن کارهای محدودی برروی دسترسی به شبکه یا وضعیت شارژ
            • برنامه زمانبندی غیر همزمان یا دوره ای
            • نظارت و مدیریت برنامه زمانبندی وظایف
            • زنجیر کردن وظایف به یکدیگر
            • تضمین انجام وظیفه حتی اگر دستگاه ری استارت شود !

            در واقع میتوان گفت WorkManager برای کار های صد درصدی استفاده میشود بدین معنی که در هر صورتی (حتی اگر دستگاه ری استارت شود) وظیفه مورد نظر به انجام برسد و نه کارهای بلافاصله ای مثل :

            • ارسال لاگ یا آنالیز به بک اند
            • سینک شدن دوره ای اپلیکیشن با سرور

            یک مثال عملی از WorkManager

            خب بریم سراغ یک مثال عملی از WorkManager و زمانبندی وظایف با WorkManager در اندروید

            اضافه کردن WorkManager به پروژ‌ه

            برای استفاده از WorkManager در پروژه ابتدا باید وابستگی یا dependency های مربوط به اون رو به پروژه اضافه کنیم

            allprojects {
                repositories {
                    google()
                    ...
                }
            }
            

            نکته قابل توجه این است که برای استفاده از WorkManager باید از compileSdk 28 به بالا استفاده کنیم.
            همچنین میتونید وابستگی های AndroidX و Pre-AndroidX رو هم برای کارایی بهتر به گردل اضافه کنیم.

            همه چیز درباره AndroidX جانشین Support Library

             dependencies {
                def work_version = 2.0.0
            
                // (Java only)
                implementation "androidx.work:work-runtime:$work_version"
            
                // Kotlin + coroutines
                implementation "androidx.work:work-runtime-ktx:$work_version"
            
                // optional - RxJava2 support
                implementation "androidx.work:work-rxjava2:$work_version"
                // optional - Test helpers
                androidTestImplementation "androidx.work:work-testing:$work_version"
              }
            

            همچنین وابستگی های Pre-AndroidX

            dependencies {
                def work_version = 1.0.0
            
                // (Java only)
                implementation "android.arch.work:work-runtime:$work_version"
            
                // Kotlin + coroutines
                implementation "android.arch.work:work-runtime-ktx:$work_version"
            
                // optional - RxJava2 support
                implementation "android.arch.work:work-rxjava2:$work_version"
                // optional - Test helpers
                androidTestImplementation "android.arch.work:work-testing:$work_version"
              }
            

            ساخت یک وظیفه در پس زمینه

            یک وظیفه ایجاد شده که از کلاس Worker استفاده میکند . متد doWrok() برای اجرای همگام ترد ها در پس زمینه با workmanager استفاده میشود.

            برای ایجاد یک تسک بک گراند شما باید یک کلاس ایجاد کنید و آنرا از کلاس Worker ارث بری (extend) کنید و همچنین متد doWork رو override یا فراخوانی کنید
            در مثال زیر ما یک کلاس برای آپلود کردن عکس با کانفیگی که در بالا گفته شد ایجاد کردیم

            کاتلین

            class UploadWorker(appContext: Context, workerParams: WorkerParameters)
                : Worker(appContext, workerParams) {
            
                override fun doWork(): Result {
                    // Do the work here--in this case, upload the images.
            
                    uploadImages()
            
                    // Indicate whether the task finished successfully with the Result
                    return Result.success()
                }
            }
            

            جاوا

            public class UploadWorker extends Worker {
            
                public UploadWorker(
                    @NonNull Context context,
                    @NonNull WorkerParameters params) {
                    super(context, params);
                }
            
                @Override
                public Result doWork() {
                  // Do the work here--in this case, upload the images.
            
                  uploadImages()
            
                  // Indicate whether the task finished successfully with the Result
                  return Result.success()
                }
            }
            

            مقدار Result از متد doWork برگردانده شده و مشخص میکند که از کدام یک از انواع زیر است :

            • با موفقیت به اتمام رسیده Result.success()
            • شکست خورده Result.failure()
            • نیاز به تکرار در زمانی دیگر دارد Result.retry()

            کانفیگ کردن اینکه چه زمانی و چگونه وظیفه (task) انجام شود

            کلاس دیگری بنام WorkRequest وجود دارد که مشخص کننده زمان و چگونگی اجرای وظیفه یا تسک است.
            توجه داشته باشید که تسک های شما ممکن است یک باره یا تناوبی باشند.
            برای وظایف یکباره میتوانید از کلاس OneTimeWorkRequest و برای وظایف تناوبی میتوانید از کلاس PeriodicTimeWorkRequest استفاده کنید.
            در مثال زیر ما تسک آپلود عکس را بصورت یکباره ایجاد کرده ایم

            کاتلین

            val uploadWorkRequest = OneTimeWorkRequestBuilder<UploadWorker>()
                    .build()
            

            جاوا

            OneTimeWorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class)
                    .build()
            

            همچنین کلاس WorkRequest میتونه اطلاعات اظافی (additional) رو به درخواست اضافه کند برای مثال محدودیت هایی برروی وظایفی که میخواهند اجرا شوند , تاخیر , بازه زمانی برای درخواست مجدد و .. که در مقاله به صورت کامل توضیح داده شده

            سپردن وظیفه به سیستم

            پس از مشخص کردن درخواست با استفاده از WorkRequest حال زمان آن ست که وظیفه را با WorkManager با استفاده از enqueue() زمانبندی کنیم

            کاتلین

            WorkManager.getInstance().enqueue(uploadWorkRequest)
            

            جاوا

            WorkManager.getInstance().enqueue(uploadWorkRequest);
            
            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            2 Comments

            1. سمیرا گفت:
              29 مهر 1398 در 14:47

              هر کاری کردم هیچ کنترلی نتونستم رویه بازه های زمانی اجرایی این داشته باشم

              تنها کاری که من نیاز داشتم این بود که هر ۶۰ ثانیه یک بار به سرور وصل بشه و یه سری اطلاعات رو از سرور بخونه و اگه پیغام جدیدی بود به صورت نوتیفیکیشن به کاربر اطلاع بده

              PeriodicWorkRequest simpleRequest1 = new PeriodicWorkRequest.Builder(MyWorker.class,60,TimeUnit.SECONDS).addTag(“periodic_work”).build();

              یا

              PeriodicWorkRequest simpleRequest1 = new PeriodicWorkRequest.Builder(MyWorker.class,5,TimeUnit.SECONDS,60,TimeUnit.SECONDS).addTag(“periodic_work”).build();

              رویه سرور لاک گذاشتم دفعه اول تویه ۵ ثانیه لاک ثبت میشه
              ولی لاک های بعدی اختلاف زمانیشون به ۱۰ ۲۰ دقیقه میرسه

              پاسخ
            2. سمیرا گفت:
              29 مهر 1398 در 15:25

              طبق بررسی هایی که کردم متوجه شدم حداقل زمان برای استفاده ازش ۱۵ دقیقه تعیین شده

              MIN_PERIODIC_INTERVAL_MILLIS

              public static final long MIN_PERIODIC_INTERVAL_MILLIS

              The minimum interval duration for PeriodicWorkRequest (in milliseconds).

              Constant Value: 900000 (0x00000000000dbba0)

              پاسخ

            دیدگاهتان را بنویسید لغو پاسخ

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

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج