Middle+
Ինչպես է որոշվում ծրագրերի առաջնահերթությունը համակարգում?
sobes.tech AI
Պատասխան AI-ից
Android-ում հավելվածի առաջնահերթությունը որոշվում է մի քանի գործոնների հիման վրա, որոնցից գլխավորներն են՝
- Կոմպոնենտի ակտիվությունը: Հավելվածը, որի ակտիվ կոմպոնենտները (ակտիվությունները առջևի պլանում, ծառայությունները, որոնք սկսվել են
startForeground-ով), ունի ավելի բարձր առաջնահերթություն: - Ռեսուրսների օգտագործումը: Ակտիվ CPU-ով կամ շատ հիշողություն օգտագործող հավելվածները համակարգի կողմից կարող են նշվել որպես ավելի ցածր առաջնահերթությամբ՝ ավելի կարևոր գործառույթների համար ռեսուրսներ պահելու համար:
- Համակարգչային ինտերֆեյսի հետ կապը: Հավելվածները, որոնք անմիջապես փոխազդում են օգտվողի հետ այս պահին, ստանում են ամենաբարձր առաջնահերթությունը:
- Կապ ավելի բարձր առաջնահերթության պրոցեսների հետ: Պրոցեսը, որի հետ կապված է կոմպոնենտը (օրինակ՝ ծառայությունը, որի հետ կապված է ակտիվությունը), ժառանգում է ավելի բարձր պրոցեսի առաջնահերթությունը:
Android համակարգը օգտագործում է այս գործոնները՝ որոշելու համար «շրջանակի կարևորությունը» (importance level) հավելվածի, որը վերջնականապես որոշում է, թե որքան հավանական է, որ նրա պրոցեսը կավարտվի (կտրվի) հիշողության պակասի դեպքում:
Հիմնական կարևորության մակարդակները՝ պրոցեսների:
- Foreground process: Ամենահետաքրքիր պրոցեսը: Հավելված, որի ակտիվությունը տեսանելի է էկրանին, կամ որը սկսվել է
startForeground-ով, կամ օգտագործում է որոշ API-ներ (օրինակ՝ կապված մյուս ակտիվության հետ առջևի պլանում): Երբեք չի ավարտվում համակարգի կողմից, եթե միայն չկան խիստ ռեսուրսների պակաս: - Visible process: Պրոցես, որը չունի առջևի պլանի կոմպոնենտներ, բայց ազդում է այն վրա, ինչ տեսնում է օգտվողը: Օրինակ՝ պրոցես, որը պարունակում է ծառայություն, կապված առջևի պլանի ակտիվության հետ:
- Service process: Պրոցես, որը պարունակում է ծառայություն, սկսված
startService-ով և չնշված որպես foreground service: Կարող է ավարտվել, երբ ռեսուրսների պակասը լուրջ է դառնում: - Cached process: Պրոցես, որը չունի ակտիվ կոմպոնենտներ և պահվում է հիշողության մեջ՝ արագ վերականգնման համար: Ամենափոքր կարևորության պրոցեսն է և ամենահավանական թեկնածուն՝ ավարտելու համար ռեսուրսների պակասի դեպքում։