این صفحه چند بهترین روش را برای تنظیم وظایف پس زمینه با رفتار خوب پیشنهاد می کند. این بهترین شیوه ها به طور خاص با هدف کاهش مصرف باتری هستند، اما می توانند عملکرد دستگاه را به روش های دیگری مانند کاهش استفاده از شبکه نیز بهبود بخشند.
محدودیت های بهینه را انتخاب کنید و وظایف را ترکیب کنید
برای به حداقل رساندن باری که وظایف شما روی دستگاه میگذارد، مهم است که محدودیتهای بهینه را مشخص کنید . (برای کارهای JobScheduler، برای لیست محدودیت ها به JobInfo.Builder
مراجعه کنید.) برای مثال، اگر می خواهید مطمئن شوید که باتری برنامه شما تمام نمی شود، ایده خوبی است که محدودیت RequiresCharging
را مشخص کنید. این محدودیت به سیستم می گوید که کار را اجرا نکند مگر اینکه سطح باتری واقعاً افزایش یابد. به طور مشابه، استفاده از Wi-Fi معمولاً به انرژی کمتری نسبت به داده تلفن همراه نیاز دارد، بنابراین اگر وظیفه شما به اتصال شبکه نیاز دارد اما میتوانید منتظر بمانید تا یک شبکه بدون اندازهگیری در دسترس باشد، ایده خوبی است که یک محدودیت NetworkType.UNMETERED
را تنظیم کنید.
همچنین، اگر چندین کار مشابه دارید که تحت محدودیت های یکسانی قرار می گیرند، معمولاً ایده خوبی است که آنها را در یک کار واحد ترکیب کنید، بنابراین دستگاه فقط یک بار بیدار می شود. به عنوان مثال، فرض کنید برنامه شما دارای سه مجموعه داده مختلف است که برای همگام سازی با فضای ذخیره سازی ابری نیاز دارد. به جای زمانبندی سه کار مختلف – یکی برای هر مجموعه داده – معمولاً ایده بهتر این است که فقط یک کار «همگامسازی دادهها» را زمانبندی کنید، محدودیتهای مناسبی را تعریف کنید و اجازه دهید آن کار تمام همگامسازی دادههای معلق را هنگام اجرا انجام دهد.
با این اوصاف، شما نباید سعی کنید وظایف نامرتبط را در یک کار انجام دهید ترکیب کنید. در عوض، فقط مطمئن شوید که به هر وظیفه محدودیت های مناسبی بدهید. به عنوان مثال، اگر کارها اولویت پایینی دارند، حتماً مشخص کنید که باید زمانی که دستگاه بیکار است و در حال شارژ است اجرا شوند. به این ترتیب، حتی اگر دستگاه چندین بار از خواب بیدار شود، به تجربه کاربر لطمه ای وارد نمی کند و عمر باتری را تحت تأثیر قرار نمی دهد.
فقط زمانی وظایف را به عنوان تسریع علامت گذاری کنید که به زمان حساس باشند
اگر کاری به ویژه فوری است، میتوانید آن را بهعنوان تسریع شده علامتگذاری کنید . (برای کارهای JobScheduler، با JobInfo.Builder.setExpedited(true)
تماس بگیرید.) انجام این کار به روش های مختلفی اولویت بندی می کند. به عنوان مثال، سیستم در زمانی که بتواند آن وظایف را بلافاصله اجرا می کند و محدودیت های مدیریت توان کمتر بر وظایف تسریع شده تأثیر می گذارد.
به این دلایل، باید مراقب باشید که فقط در صورت نیاز، یک کار را به عنوان تسریع علامت گذاری کنید. از آنجایی که کارهای تسریع شده می توانند برخی از کارایی های سیستم را نادیده بگیرند، کارهای تسریع شده می توانند انرژی بیشتری نسبت به زمانی که به این شکل علامت گذاری نمی شدند، کاهش دهند.
فقط در صورتی باید کاری را بهعنوان تسریع علامتگذاری کنید که به زمان حساس باشد، و اگر اجرای آن کار بیشتر طول بکشد، تجربه کاربر مختل میشود. به عنوان مثال، اگر برنامه شما وظیفه ای را برای مدیریت یک پیام FCM با اولویت بالا اجرا می کند، این دلیل مناسبی برای علامت گذاری کار به عنوان تسریع شده است. اما نباید فقط برای نادیده گرفتن بهینه سازی های سیستم، یک کار را به عنوان تسریع علامت گذاری کنید.
بررسی کنید چرا وظایف شما متوقف شده است
اگر کارهای شما قبل از اتمام متوقف شوند، می توانید با فراخوانی WorkInfo.getStopReason()
بررسی کنید که چرا متوقف شده اند. (برای کارهای JobScheduler، با JobParameters.getStopReason()
تماس بگیرید. انجام این کار به چند دلیل مهم است. اول از همه، مطمئناً می خواهید کارهایتان تمام شود. پیدا کردن دلیل توقف وظایف شما به شما کمک می کند از موقعیت های مشابه اجتناب کنید. سیستم به دلیل رفتاری که بیش از حد از منابع سیستم استفاده می کند، احتمالاً کارها را متوقف می کند.
برای مثال، اگر کارهای شما اغلب با دلیل STOP_REASON_TIMEOUT
متوقف میشوند، ممکن است یک مورد لبهای وجود داشته باشد که گاهی اوقات باعث میشود کارهای شما بسیار بیشتر از آنچه انتظار دارید طول بکشد.
توصیه می کنیم از موتور تجزیه و تحلیل خود برای پیگیری اینکه آیا وظایف برنامه شما متوقف شده است و به چه دلایلی استفاده کنید.
،این صفحه چند بهترین روش را برای تنظیم وظایف پس زمینه با رفتار خوب پیشنهاد می کند. این بهترین شیوه ها به طور خاص با هدف کاهش مصرف باتری هستند، اما می توانند عملکرد دستگاه را به روش های دیگری مانند کاهش استفاده از شبکه نیز بهبود بخشند.
محدودیت های بهینه را انتخاب کنید و وظایف را ترکیب کنید
برای به حداقل رساندن باری که وظایف شما روی دستگاه میگذارد، مهم است که محدودیتهای بهینه را مشخص کنید . (برای کارهای JobScheduler، برای لیست محدودیت ها به JobInfo.Builder
مراجعه کنید.) برای مثال، اگر می خواهید مطمئن شوید که باتری برنامه شما تمام نمی شود، ایده خوبی است که محدودیت RequiresCharging
را مشخص کنید. این محدودیت به سیستم می گوید که کار را اجرا نکند مگر اینکه سطح باتری واقعاً افزایش یابد. به طور مشابه، استفاده از Wi-Fi معمولاً به انرژی کمتری نسبت به داده تلفن همراه نیاز دارد، بنابراین اگر وظیفه شما به اتصال شبکه نیاز دارد اما میتوانید منتظر بمانید تا یک شبکه بدون اندازهگیری در دسترس باشد، ایده خوبی است که یک محدودیت NetworkType.UNMETERED
را تنظیم کنید.
همچنین، اگر چندین کار مشابه دارید که تحت محدودیت های یکسانی قرار می گیرند، معمولاً ایده خوبی است که آنها را در یک کار واحد ترکیب کنید، بنابراین دستگاه فقط یک بار بیدار می شود. به عنوان مثال، فرض کنید برنامه شما دارای سه مجموعه داده مختلف است که برای همگام سازی با فضای ذخیره سازی ابری نیاز دارد. به جای زمانبندی سه کار مختلف – یکی برای هر مجموعه داده – معمولاً ایده بهتر این است که فقط یک کار «همگامسازی دادهها» را زمانبندی کنید، محدودیتهای مناسبی را تعریف کنید و اجازه دهید آن کار تمام همگامسازی دادههای معلق را هنگام اجرا انجام دهد.
با این اوصاف، شما نباید سعی کنید وظایف نامرتبط را در یک کار انجام دهید ترکیب کنید. در عوض، فقط مطمئن شوید که به هر وظیفه محدودیت های مناسبی بدهید. به عنوان مثال، اگر کارها اولویت پایینی دارند، حتماً مشخص کنید که باید زمانی که دستگاه بیکار است و در حال شارژ است اجرا شوند. به این ترتیب، حتی اگر دستگاه چندین بار از خواب بیدار شود، به تجربه کاربر لطمه ای وارد نمی کند و عمر باتری را تحت تأثیر قرار نمی دهد.
فقط زمانی وظایف را به عنوان تسریع علامت گذاری کنید که به زمان حساس باشند
اگر کاری به ویژه فوری است، میتوانید آن را بهعنوان تسریع شده علامتگذاری کنید . (برای کارهای JobScheduler، با JobInfo.Builder.setExpedited(true)
تماس بگیرید.) انجام این کار به روش های مختلفی اولویت بندی می کند. به عنوان مثال، سیستم در زمانی که بتواند آن وظایف را بلافاصله اجرا می کند و محدودیت های مدیریت توان کمتر بر وظایف تسریع شده تأثیر می گذارد.
به این دلایل، باید مراقب باشید که فقط در صورت نیاز، یک کار را به عنوان تسریع علامت گذاری کنید. از آنجایی که کارهای تسریع شده می توانند برخی از کارایی های سیستم را نادیده بگیرند، کارهای تسریع شده می توانند انرژی بیشتری نسبت به زمانی که به این شکل علامت گذاری نمی شدند، کاهش دهند.
فقط در صورتی باید کاری را بهعنوان تسریع علامتگذاری کنید که به زمان حساس باشد، و اگر اجرای آن کار بیشتر طول بکشد، تجربه کاربر مختل میشود. به عنوان مثال، اگر برنامه شما وظیفه ای را برای مدیریت یک پیام FCM با اولویت بالا اجرا می کند، این دلیل مناسبی برای علامت گذاری کار به عنوان تسریع شده است. اما نباید فقط برای نادیده گرفتن بهینه سازی های سیستم، یک کار را به عنوان تسریع علامت گذاری کنید.
بررسی کنید چرا وظایف شما متوقف شده است
اگر کارهای شما قبل از اتمام متوقف شوند، می توانید با فراخوانی WorkInfo.getStopReason()
بررسی کنید که چرا متوقف شده اند. (برای کارهای JobScheduler، با JobParameters.getStopReason()
تماس بگیرید. انجام این کار به چند دلیل مهم است. اول از همه، مطمئناً می خواهید کارهایتان تمام شود. پیدا کردن دلیل توقف وظایف شما به شما کمک می کند از موقعیت های مشابه اجتناب کنید. سیستم به دلیل رفتاری که بیش از حد از منابع سیستم استفاده می کند، احتمالاً کارها را متوقف می کند.
برای مثال، اگر کارهای شما اغلب با دلیل STOP_REASON_TIMEOUT
متوقف میشوند، ممکن است یک مورد لبهای وجود داشته باشد که گاهی اوقات باعث میشود کارهای شما بسیار بیشتر از آنچه انتظار دارید طول بکشد.
توصیه می کنیم از موتور تجزیه و تحلیل خود برای پیگیری اینکه آیا وظایف برنامه شما متوقف شده است و به چه دلایلی استفاده کنید.
،این صفحه چند بهترین روش را برای تنظیم وظایف پس زمینه با رفتار خوب پیشنهاد می کند. این بهترین شیوه ها به طور خاص با هدف کاهش مصرف باتری هستند، اما می توانند عملکرد دستگاه را به روش های دیگری مانند کاهش استفاده از شبکه نیز بهبود بخشند.
محدودیت های بهینه را انتخاب کنید و وظایف را ترکیب کنید
برای به حداقل رساندن باری که وظایف شما روی دستگاه میگذارد، مهم است که محدودیتهای بهینه را مشخص کنید . (برای کارهای JobScheduler، برای لیست محدودیت ها به JobInfo.Builder
مراجعه کنید.) برای مثال، اگر می خواهید مطمئن شوید که باتری برنامه شما تمام نمی شود، ایده خوبی است که محدودیت RequiresCharging
را مشخص کنید. این محدودیت به سیستم می گوید که کار را اجرا نکند مگر اینکه سطح باتری واقعاً افزایش یابد. به طور مشابه، استفاده از Wi-Fi معمولاً به انرژی کمتری نسبت به داده تلفن همراه نیاز دارد، بنابراین اگر وظیفه شما به اتصال شبکه نیاز دارد اما میتوانید منتظر بمانید تا یک شبکه بدون اندازهگیری در دسترس باشد، ایده خوبی است که یک محدودیت NetworkType.UNMETERED
را تنظیم کنید.
همچنین، اگر چندین کار مشابه دارید که تحت محدودیت های یکسانی قرار می گیرند، معمولاً ایده خوبی است که آنها را در یک کار واحد ترکیب کنید، بنابراین دستگاه فقط یک بار بیدار می شود. به عنوان مثال، فرض کنید برنامه شما دارای سه مجموعه داده مختلف است که برای همگام سازی با فضای ذخیره سازی ابری نیاز دارد. به جای زمانبندی سه کار مختلف – یکی برای هر مجموعه داده – معمولاً ایده بهتر این است که فقط یک کار «همگامسازی دادهها» را زمانبندی کنید، محدودیتهای مناسبی را تعریف کنید و اجازه دهید آن کار تمام همگامسازی دادههای معلق را هنگام اجرا انجام دهد.
با این اوصاف، شما نباید سعی کنید وظایف نامرتبط را در یک کار انجام دهید ترکیب کنید. در عوض، فقط مطمئن شوید که به هر وظیفه محدودیت های مناسبی بدهید. به عنوان مثال، اگر کارها اولویت پایینی دارند، حتماً مشخص کنید که باید زمانی که دستگاه بیکار است و در حال شارژ است اجرا شوند. به این ترتیب، حتی اگر دستگاه چندین بار از خواب بیدار شود، به تجربه کاربر لطمه ای وارد نمی کند و عمر باتری را تحت تأثیر قرار نمی دهد.
فقط زمانی وظایف را به عنوان تسریع علامت گذاری کنید که به زمان حساس باشند
اگر کاری به ویژه فوری است، میتوانید آن را بهعنوان تسریع شده علامتگذاری کنید . (برای کارهای JobScheduler، با JobInfo.Builder.setExpedited(true)
تماس بگیرید.) انجام این کار به روش های مختلفی اولویت بندی می کند. به عنوان مثال، سیستم در زمانی که بتواند آن وظایف را بلافاصله اجرا می کند و محدودیت های مدیریت توان کمتر بر وظایف تسریع شده تأثیر می گذارد.
به این دلایل، باید مراقب باشید که فقط در صورت نیاز، یک کار را به عنوان تسریع علامت گذاری کنید. از آنجایی که کارهای تسریع شده می توانند برخی از کارایی های سیستم را نادیده بگیرند، کارهای تسریع شده می توانند انرژی بیشتری نسبت به زمانی که به این شکل علامت گذاری نمی شدند، کاهش دهند.
فقط در صورتی باید کاری را بهعنوان تسریع علامتگذاری کنید که به زمان حساس باشد، و اگر اجرای آن کار بیشتر طول بکشد، تجربه کاربر مختل میشود. به عنوان مثال، اگر برنامه شما وظیفه ای را برای مدیریت یک پیام FCM با اولویت بالا اجرا می کند، این دلیل مناسبی برای علامت گذاری کار به عنوان تسریع شده است. اما نباید فقط برای نادیده گرفتن بهینه سازی های سیستم، یک کار را به عنوان تسریع علامت گذاری کنید.
بررسی کنید چرا وظایف شما متوقف شده است
اگر کارهای شما قبل از اتمام متوقف شوند، می توانید با فراخوانی WorkInfo.getStopReason()
بررسی کنید که چرا متوقف شده اند. (برای کارهای JobScheduler، با JobParameters.getStopReason()
تماس بگیرید. انجام این کار به چند دلیل مهم است. اول از همه، مطمئناً می خواهید کارهایتان تمام شود. پیدا کردن دلیل توقف وظایف شما به شما کمک می کند از موقعیت های مشابه اجتناب کنید. سیستم به دلیل رفتاری که بیش از حد از منابع سیستم استفاده می کند، احتمالاً کارها را متوقف می کند.
برای مثال، اگر کارهای شما اغلب با دلیل STOP_REASON_TIMEOUT
متوقف میشوند، ممکن است یک مورد لبهای وجود داشته باشد که گاهی اوقات باعث میشود کارهای شما بسیار بیشتر از آنچه انتظار دارید طول بکشد.
توصیه می کنیم از موتور تجزیه و تحلیل خود برای پیگیری اینکه آیا وظایف برنامه شما متوقف شده است و به چه دلایلی استفاده کنید.
،این صفحه چند بهترین روش را برای تنظیم وظایف پس زمینه با رفتار خوب پیشنهاد می کند. این بهترین شیوه ها به طور خاص با هدف کاهش مصرف باتری هستند، اما می توانند عملکرد دستگاه را به روش های دیگری مانند کاهش استفاده از شبکه نیز بهبود بخشند.
محدودیت های بهینه را انتخاب کنید و وظایف را ترکیب کنید
برای به حداقل رساندن باری که وظایف شما روی دستگاه میگذارد، مهم است که محدودیتهای بهینه را مشخص کنید . (برای کارهای JobScheduler، برای لیست محدودیت ها به JobInfo.Builder
مراجعه کنید.) برای مثال، اگر می خواهید مطمئن شوید که باتری برنامه شما تمام نمی شود، ایده خوبی است که محدودیت RequiresCharging
را مشخص کنید. این محدودیت به سیستم می گوید که کار را اجرا نکند مگر اینکه سطح باتری واقعاً افزایش یابد. به طور مشابه، استفاده از Wi-Fi معمولاً به انرژی کمتری نسبت به داده تلفن همراه نیاز دارد، بنابراین اگر وظیفه شما به اتصال شبکه نیاز دارد اما میتوانید منتظر بمانید تا یک شبکه بدون اندازهگیری در دسترس باشد، ایده خوبی است که یک محدودیت NetworkType.UNMETERED
را تنظیم کنید.
همچنین، اگر چندین کار مشابه دارید که تحت محدودیت های یکسانی قرار می گیرند، معمولاً ایده خوبی است که آنها را در یک کار واحد ترکیب کنید، بنابراین دستگاه فقط یک بار بیدار می شود. به عنوان مثال، فرض کنید برنامه شما دارای سه مجموعه داده مختلف است که برای همگام سازی با فضای ذخیره سازی ابری نیاز دارد. به جای زمانبندی سه کار مختلف – یکی برای هر مجموعه داده – معمولاً ایده بهتر این است که فقط یک کار «همگامسازی دادهها» را زمانبندی کنید، محدودیتهای مناسبی را تعریف کنید و اجازه دهید آن کار تمام همگامسازی دادههای معلق را هنگام اجرا انجام دهد.
با این اوصاف، شما نباید سعی کنید وظایف نامرتبط را در یک کار انجام دهید ترکیب کنید. در عوض، فقط مطمئن شوید که به هر وظیفه محدودیت های مناسبی بدهید. به عنوان مثال، اگر کارها اولویت پایینی دارند، حتماً مشخص کنید که باید در زمانی که دستگاه بیکار است و در حال شارژ است اجرا شوند. به این ترتیب، حتی اگر دستگاه چندین بار بیدار شود، به تجربه کاربر لطمه ای نمی زند و عمر باتری را تحت تأثیر قرار نمی دهد.
فقط زمانی وظایف را به عنوان تسریع علامت گذاری کنید که به زمان حساس هستند
اگر کاری به ویژه فوری است، میتوانید آن را بهعنوان تسریع شده علامتگذاری کنید . (برای کارهای JobScheduler، با JobInfo.Builder.setExpedited(true)
تماس بگیرید.) انجام این کار به روش های مختلفی اولویت بندی می کند. به عنوان مثال، سیستم در زمانی که بتواند آن وظایف را بلافاصله اجرا می کند و محدودیت های مدیریت توان کمتر بر وظایف تسریع شده تأثیر می گذارد.
به این دلایل، باید مراقب باشید که فقط در صورت نیاز، یک کار را به عنوان تسریع علامت گذاری کنید. از آنجایی که کارهای تسریع شده میتوانند برخی از کاراییهای سیستم را نادیده بگیرند، وظایف تسریعشده میتوانند انرژی بیشتری نسبت به زمانی که به این شکل علامتگذاری نمیشدند، کاهش دهند.
فقط در صورتی باید کاری را بهعنوان تسریع علامتگذاری کنید که به زمان حساس باشد، و اگر اجرای آن کار بیشتر طول بکشد، تجربه کاربر مختل میشود. به عنوان مثال، اگر برنامه شما وظیفه ای را برای مدیریت یک پیام FCM با اولویت بالا اجرا می کند، این دلیل مناسبی برای علامت گذاری کار به عنوان تسریع شده است. اما شما نباید فقط برای نادیده گرفتن بهینه سازی سیستم، یک کار را به عنوان تسریع علامت گذاری کنید.
بررسی کنید چرا وظایف شما متوقف شده است
اگر کارهای شما قبل از اتمام متوقف شوند، می توانید با فراخوانی WorkInfo.getStopReason()
بررسی کنید که چرا متوقف شده اند. (برای کارهای JobScheduler، با JobParameters.getStopReason()
تماس بگیرید. انجام این کار به چند دلیل مهم است. اول از همه، مطمئناً می خواهید کارهایتان تمام شود. پیدا کردن دلیل توقف وظایف شما به شما کمک می کند از موقعیت های مشابه اجتناب کنید. سیستم به دلیل رفتاری که بیش از حد از منابع سیستم استفاده می کند، احتمالاً کارها را متوقف می کند.
برای مثال، اگر کارهای شما اغلب با دلیل STOP_REASON_TIMEOUT
متوقف میشوند، ممکن است یک مورد لبهای وجود داشته باشد که گاهی اوقات باعث میشود کارهای شما بسیار بیشتر از آنچه انتظار دارید طول بکشد.
توصیه می کنیم از موتور تجزیه و تحلیل خود برای پیگیری اینکه آیا وظایف برنامه شما متوقف شده است و به چه دلایلی استفاده کنید.