تجزیه و تحلیل وظایف کوتاه مدت و وظایف بلند مدت: اساس توسعه پس زمینه بعدی HarmonyOS – انجمن DEV

Summarize this content to 400 words in Persian Lang
هدف این مقاله بررسی جزئیات فنی سیستم هارمونی او اس بعدی هواوی (در حال حاضر API12) و خلاصه کردن آن بر اساس شیوههای توسعه واقعی است. عمدتاً به عنوان حاملی برای به اشتراک گذاری و تبادل فناوری استفاده می شود و اشتباهات و حذفیات اجتناب ناپذیر است تا نظرات و سؤالات ارزشمندی را برای پیشرفت متقابل مطرح کنند. این مقاله محتوای اصلی است و هر گونه چاپ مجدد به هر شکلی باید منبع و نویسنده اصلی را ذکر کند.
وظایف پسزمینه بخشی جداییناپذیر از توسعه برنامهها هستند. HarmonyOS Next توابع مدیریت وظایف پسزمینه غنی را ارائه میکند، که وظایف کوتاهمدت و وظایف طولانیمدت دو نوع اساسی و رایج هستند. این مقاله تجزیه و تحلیل عمیقی از وظایف کوتاه مدت و وظایف بلند مدت ارائه می دهد تا به ما در درک بهتر و استفاده از این عملکردها در توسعه روزانه کمک کند.
مروری بر وظایف کوتاه مدت و الزامات برنامه
وظایف کوتاهمدت برای کارهایی با نیازهای بلادرنگ پسزمینه بالا و کارهای زمانبر کوتاه، مانند ذخیره وضعیت، ارسال پیام، درخواستهای شبکه و غیره مناسب هستند. توسعه دهندگان می توانند استفاده کنند requestSuspendDelay این رابط برای کارهای کوتاه مدت اعمال می شود و یک عملکرد برگشت به تماس را برای رسیدگی به زمان پایان کار تنظیم می کند.شرایط درخواست:
برنامه باید در پیش زمینه یا onBackground برای کارهای کوتاه مدت در پاسخ به تماس درخواست دهید، در غیر این صورت برنامه با شکست مواجه خواهد شد.
یک برنامه کاربردی می تواند برای حداکثر 3 کار کوتاه مدت به طور همزمان درخواست دهد.
سهمیه پیشفرض برای یک روز (در عرض 24 ساعت) 10 دقیقه، حداکثر سهمیه برای یک بار 3 دقیقه و سهمیه پیشفرض برای یک بار زمانی 1 دقیقه است که باتری کم است.
پس از اتمام کار، برنامه باید فعالانه کار کوتاه مدت را لغو کند، در غیر این صورت بر سهمیه باقی مانده برنامه برای کارهای کوتاه مدت برای روز تأثیر می گذارد.
هنگامی که کار کوتاه مدت به پایان می رسد، سیستم برنامه را دوباره فراخوانی می کند و برنامه باید کار کوتاه مدت را لغو کند. اگر مهلت زمانی لغو نشود، سیستم فرآیند درخواست مربوطه را خاتمه خواهد داد. ### سهمیه منابع و مدیریت سهمیه وظایف کوتاه مدت به منظور اطمینان از استفاده معقول از منابع دستگاه، سیستم محدودیت های سهمیه منابع را برای وظایف کوتاه مدت اعمال خواهد کرد. هر برنامه دارای سهمیه مشخصی از وظایف کوتاه مدت است. توسعه دهندگان می توانند استفاده کنند getRemainingDelayTime رابط زمان باقیمانده وظایف کوتاه مدت برنامه فعلی را جستجو می کند و تصمیم می گیرد که آیا بر اساس زمان باقی مانده به انجام سایر وظایف ادامه دهد یا خیر.
محاسبه سهمیه:
فقط زمانی که برنامه در پسزمینه است، وظایف کوتاهمدت را در برنامه زمانبندی کنید.
کارهای کوتاه مدت در همان دوره زمانی تحت یک برنامه تکرار نمی شوند.
کد نمونه:
import { backgroundTaskManager } from ‘@kit.BackgroundTasksKit’;
function requestSuspendDelay() {
let myReason = ‘test requestSuspendDelay’; // 申请原因
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
// 回调函数。应用申请的短时任务即将超时,通过此函数回调应用,执行一些清理和标注工作,并取消短时任务
console.info(‘suspend delay task will timeout’);
backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId);
});
}
function getRemainingDelayTime() {
backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId).then((res: number) => {
console.info(‘Succeeded in getting remaining delay time.’);
console.info(`Remaining delay time: ${res} seconds`);
}).catch((err: BusinessError) => {
console.error(`Failed to get remaining delay time. Code: ${err.code}, message: ${err.message}`);
});
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سناریوهای کاربردی و فرآیندهای اجرای وظایف بلند مدت
کارهای طولانی برای کارهایی که برای مدت طولانی در پس زمینه اجرا می شوند، مانند پخش موسیقی، ناوبری، اتصال دستگاه، ردیابی موقعیت مکانی و غیره مناسب هستند. توسعه دهندگان نیاز به ایجاد یک ContinuousTaskExtensionAbility برای انجام وظایف بلند مدت و پیاده سازی onContinuousTaskStart و onContinuousTaskStop توابع پاسخ به تماس به ترتیب منطق شروع و پایان کار را کنترل می کنند.فرآیند پیاده سازی:
ایجاد کنید ContinuousTaskExtensionAbility و تابع بازگشت به تماس چرخه عمر را پیاده سازی کنید.
عبور کند backgroundTaskManager.startContinuousTask رابط یک کار طولانی مدت را شروع می کند.
وجود داشته باشد onContinuousTaskStart اجرای منطق وظیفه در پاسخ به تماس
وجود داشته باشد onContinuousTaskStop منطق کار را در پاسخ به تماس متوقف کنید.
نمونه کد:
import { ContinuousTaskExtensionAbility, backgroundTaskManager } from ‘@kit.BackgroundTasksKit’;
export default class MyContinuousTaskExtensionAbility extends ContinuousTaskExtensionAbility {
onContinuousTaskStart(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStart, workInfo = ${JSON.stringify(workInfo)}`);
// 开始执行长时任务逻辑
}
onContinuousTaskStop(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStop, workInfo is ${JSON.stringify(workInfo)}`);
// 停止执行长时任务逻辑
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مدیریت زمان پایان کار و پاسخ به تماس سیستم
به منظور جلوگیری از اشغال طولانی مدت منابع سیستم توسط وظایف طولانی مدت، سیستم مدیریت تایم اوت را برای وظایف طولانی مدت انجام می دهد. توسعه دهندگان نیاز دارند onContinuousTaskStart تایم اوت را در تماس برگشتی تنظیم کنید و پس از اتمام آن را عبور دهید backgroundTaskManager.stopContinuousTask رابط کار متوقف می شود.نمونه کد:
import { ContinuousTaskExtensionAbility, backgroundTaskManager } from ‘@kit.BackgroundTasksKit’;
export default class MyContinuousTaskExtensionAbility extends ContinuousTaskExtensionAbility {
onContinuousTaskStart(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStart, workInfo = ${JSON.stringify(workInfo)}`);
// 开始执行长时任务逻辑
// 设置超时时间,例如 5 分钟
setTimeout(() => {
console.info(‘Continuous task timeout, stopping task…’);
backgroundTaskManager.stopContinuousTask(this.continuousTaskId);
}, 5 * 60 * 1000);
}
onContinuousTaskStop(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStop, workInfo is ${JSON.stringify(workInfo)}`);
// 停止执行长时任务逻辑
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خلاصه کنید
وظایف کوتاه مدت و وظایف بلند مدت اساس توسعه پس زمینه HarmonyOS Next هستند و برای کارهای پس زمینه در سناریوهای مختلف مناسب هستند. ما باید نوع کار پس زمینه مناسب را بر اساس نیازهای واقعی انتخاب کنیم و برنامه های کاربردی را بر اساس سناریوهای توسعه خاص توسعه دهیم. در عین حال، ما همچنین باید به سهمیههای منابع و محدودیتهای سیستمی وظایف پسزمینه توجه کنیم تا از مصرف بیش از حد منابع دستگاه جلوگیری کنیم.
هدف این مقاله بررسی جزئیات فنی سیستم هارمونی او اس بعدی هواوی (در حال حاضر API12) و خلاصه کردن آن بر اساس شیوههای توسعه واقعی است. عمدتاً به عنوان حاملی برای به اشتراک گذاری و تبادل فناوری استفاده می شود و اشتباهات و حذفیات اجتناب ناپذیر است تا نظرات و سؤالات ارزشمندی را برای پیشرفت متقابل مطرح کنند. این مقاله محتوای اصلی است و هر گونه چاپ مجدد به هر شکلی باید منبع و نویسنده اصلی را ذکر کند.
وظایف پسزمینه بخشی جداییناپذیر از توسعه برنامهها هستند. HarmonyOS Next توابع مدیریت وظایف پسزمینه غنی را ارائه میکند، که وظایف کوتاهمدت و وظایف طولانیمدت دو نوع اساسی و رایج هستند. این مقاله تجزیه و تحلیل عمیقی از وظایف کوتاه مدت و وظایف بلند مدت ارائه می دهد تا به ما در درک بهتر و استفاده از این عملکردها در توسعه روزانه کمک کند.
مروری بر وظایف کوتاه مدت و الزامات برنامه
وظایف کوتاهمدت برای کارهایی با نیازهای بلادرنگ پسزمینه بالا و کارهای زمانبر کوتاه، مانند ذخیره وضعیت، ارسال پیام، درخواستهای شبکه و غیره مناسب هستند. توسعه دهندگان می توانند استفاده کنند requestSuspendDelay
این رابط برای کارهای کوتاه مدت اعمال می شود و یک عملکرد برگشت به تماس را برای رسیدگی به زمان پایان کار تنظیم می کند.
شرایط درخواست:
- برنامه باید در پیش زمینه یا
onBackground
برای کارهای کوتاه مدت در پاسخ به تماس درخواست دهید، در غیر این صورت برنامه با شکست مواجه خواهد شد. - یک برنامه کاربردی می تواند برای حداکثر 3 کار کوتاه مدت به طور همزمان درخواست دهد.
- سهمیه پیشفرض برای یک روز (در عرض 24 ساعت) 10 دقیقه، حداکثر سهمیه برای یک بار 3 دقیقه و سهمیه پیشفرض برای یک بار زمانی 1 دقیقه است که باتری کم است.
- پس از اتمام کار، برنامه باید فعالانه کار کوتاه مدت را لغو کند، در غیر این صورت بر سهمیه باقی مانده برنامه برای کارهای کوتاه مدت برای روز تأثیر می گذارد.
- هنگامی که کار کوتاه مدت به پایان می رسد، سیستم برنامه را دوباره فراخوانی می کند و برنامه باید کار کوتاه مدت را لغو کند. اگر مهلت زمانی لغو نشود، سیستم فرآیند درخواست مربوطه را خاتمه خواهد داد. ### سهمیه منابع و مدیریت سهمیه وظایف کوتاه مدت به منظور اطمینان از استفاده معقول از منابع دستگاه، سیستم محدودیت های سهمیه منابع را برای وظایف کوتاه مدت اعمال خواهد کرد. هر برنامه دارای سهمیه مشخصی از وظایف کوتاه مدت است. توسعه دهندگان می توانند استفاده کنند
getRemainingDelayTime
رابط زمان باقیمانده وظایف کوتاه مدت برنامه فعلی را جستجو می کند و تصمیم می گیرد که آیا بر اساس زمان باقی مانده به انجام سایر وظایف ادامه دهد یا خیر.
محاسبه سهمیه: - فقط زمانی که برنامه در پسزمینه است، وظایف کوتاهمدت را در برنامه زمانبندی کنید.
- کارهای کوتاه مدت در همان دوره زمانی تحت یک برنامه تکرار نمی شوند.
کد نمونه:
import { backgroundTaskManager } from '@kit.BackgroundTasksKit';
function requestSuspendDelay() {
let myReason = 'test requestSuspendDelay'; // 申请原因
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
// 回调函数。应用申请的短时任务即将超时,通过此函数回调应用,执行一些清理和标注工作,并取消短时任务
console.info('suspend delay task will timeout');
backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId);
});
}
function getRemainingDelayTime() {
backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId).then((res: number) => {
console.info('Succeeded in getting remaining delay time.');
console.info(`Remaining delay time: ${res} seconds`);
}).catch((err: BusinessError) => {
console.error(`Failed to get remaining delay time. Code: ${err.code}, message: ${err.message}`);
});
}
سناریوهای کاربردی و فرآیندهای اجرای وظایف بلند مدت
کارهای طولانی برای کارهایی که برای مدت طولانی در پس زمینه اجرا می شوند، مانند پخش موسیقی، ناوبری، اتصال دستگاه، ردیابی موقعیت مکانی و غیره مناسب هستند. توسعه دهندگان نیاز به ایجاد یک ContinuousTaskExtensionAbility
برای انجام وظایف بلند مدت و پیاده سازی onContinuousTaskStart
و onContinuousTaskStop
توابع پاسخ به تماس به ترتیب منطق شروع و پایان کار را کنترل می کنند.
فرآیند پیاده سازی:
- ایجاد کنید
ContinuousTaskExtensionAbility
و تابع بازگشت به تماس چرخه عمر را پیاده سازی کنید. - عبور کند
backgroundTaskManager.startContinuousTask
رابط یک کار طولانی مدت را شروع می کند. - وجود داشته باشد
onContinuousTaskStart
اجرای منطق وظیفه در پاسخ به تماس - وجود داشته باشد
onContinuousTaskStop
منطق کار را در پاسخ به تماس متوقف کنید.
نمونه کد:
import { ContinuousTaskExtensionAbility, backgroundTaskManager } from '@kit.BackgroundTasksKit';
export default class MyContinuousTaskExtensionAbility extends ContinuousTaskExtensionAbility {
onContinuousTaskStart(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStart, workInfo = ${JSON.stringify(workInfo)}`);
// 开始执行长时任务逻辑
}
onContinuousTaskStop(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStop, workInfo is ${JSON.stringify(workInfo)}`);
// 停止执行长时任务逻辑
}
}
مدیریت زمان پایان کار و پاسخ به تماس سیستم
به منظور جلوگیری از اشغال طولانی مدت منابع سیستم توسط وظایف طولانی مدت، سیستم مدیریت تایم اوت را برای وظایف طولانی مدت انجام می دهد. توسعه دهندگان نیاز دارند onContinuousTaskStart
تایم اوت را در تماس برگشتی تنظیم کنید و پس از اتمام آن را عبور دهید backgroundTaskManager.stopContinuousTask
رابط کار متوقف می شود.
نمونه کد:
import { ContinuousTaskExtensionAbility, backgroundTaskManager } from '@kit.BackgroundTasksKit';
export default class MyContinuousTaskExtensionAbility extends ContinuousTaskExtensionAbility {
onContinuousTaskStart(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStart, workInfo = ${JSON.stringify(workInfo)}`);
// 开始执行长时任务逻辑
// 设置超时时间,例如 5 分钟
setTimeout(() => {
console.info('Continuous task timeout, stopping task...');
backgroundTaskManager.stopContinuousTask(this.continuousTaskId);
}, 5 * 60 * 1000);
}
onContinuousTaskStop(workInfo: backgroundTaskManager.WorkInfo) {
console.info(`onContinuousTaskStop, workInfo is ${JSON.stringify(workInfo)}`);
// 停止执行长时任务逻辑
}
}
خلاصه کنید
وظایف کوتاه مدت و وظایف بلند مدت اساس توسعه پس زمینه HarmonyOS Next هستند و برای کارهای پس زمینه در سناریوهای مختلف مناسب هستند. ما باید نوع کار پس زمینه مناسب را بر اساس نیازهای واقعی انتخاب کنیم و برنامه های کاربردی را بر اساس سناریوهای توسعه خاص توسعه دهیم. در عین حال، ما همچنین باید به سهمیههای منابع و محدودیتهای سیستمی وظایف پسزمینه توجه کنیم تا از مصرف بیش از حد منابع دستگاه جلوگیری کنیم.