Middle
Ի՞նչ է Android պլատֆորմում դիրքերի փոփոխության առանձնահատկությունը։
sobes.tech AI
Պատասխան AI-ից
Երբ փոխվում է դիրքը (օրինակ՝ էկրանին պտտում կամ այլ կոնֆիգուրացիոն փոփոխություններ) Android-ում, ընթացիկ Activity-ն ոչնչացվում է և ստեղծվում է նոր։
Ինչ է տեղի ունենում:
- Հին Activity-ի կյանքի ցիկլերը կանչվում են՝
onPause(),onStop(),onDestroy(): - Հին Activity-ն հեռացվում է հիշողությունից:
- Նոր Activity-ն ստեղծվում է:
- Նոր Activity-ի կյանքի ցիկլերը կանչվում են՝
onCreate(),onStart(),onResume():
QA-ի համար առանձնահատկություններ:
- Տվյալների կորուստ: Անպահպանված տվյալները՝ մուտքային դաշտերում, ընտրված տարրեր ցանկում և այլն, կարող են կորել, եթե դրանց պահպանությունը չի իրականացվել:
- UI-ի վիճակը: Էլեմենտների տեսանելիությունը, սքրոլի դիրքը, ընտրված տաբները և այլ UI-ի վիճակները կարող են վերականգնվել նախնական վիճակին:
- Ֆոնային գործողություններ: Ֆոնային առաջադրանքները (օրինակ՝ տվյալների բեռնումը) կարող են ընդհատվել կամ սխալ ավարտվել:
- Արդյունավետություն: Կրկնվող կոնֆիգուրացիոն փոփոխությունները կարող են դանդաղեցնել հավելվածը՝ Activity-ի մշտական վերականգնման պատճառով:
- Հիշողության արտահոսք: Անպատշաճ ռեսուրսների աշխատանքի պատճառով (օրինակ՝ Listener-ներ, որոնք չեն անջատվել
onDestroy()-ում) կարող է առաջանալ հիշողության արտահոսք:
Ինչպես են դա կարգավորում ծրագրավորողները (և ինչ պետք է առաջին հերթին ստուգի QA-ն):
- Կարգավիճակի պահպանում:
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC) օգտագործելով:
// Տվյալների պահպանում `onSaveInstanceState()`-ում
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("saved_text", myEditText.getText().toString());
}
// Տվյալների վերականգնում `onCreate()`-ում
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String savedText = savedInstanceState.getString("saved_text");
if (savedText != null) {
myEditText.setText(savedText);
}
}
}
- Կոնֆիգուրացիայի փոփոխությունների կառավարում:
android:configChanges-ը հայտարարելըAndroidManifest.xml-ում այն դեպքերում, երբ վերականգնումը չի պահանջվում: - ViewModel-ի կյանքի ցիկլը: ViewModel-ը պահպանում է իր վիճակը կոնֆիգուրացիայի փոփոխության ժամանակ և չի ոչնչացվում միասին Activity-ի:
- Fragment-ների կառավարում: Դուրս է գալիս ճիշտ կյանքի ցիկլի կառավարում:
Փորձարկումներ դիրքի փոփոխության համար:
- Էկրանին պտտելու սիմուլյացիա տարբեր սարքերում և էմուլատորներում:
- Տվյալների պահպանման և վերականգնման փորձարկում դիրքի փոփոխությունից հետո:
- UI-ի վիճակի ստուգում (տեսանելիություն, տեքստ, սքրոլ, ընտրված տարրեր):
- Ֆոնային առաջադրանքների ընդհատում/շարունակություն:
- Հիշողության արտահոսքի ստուգում (Android Profiler-ով):
- Սթրեսային փորձարկում՝ արագ բազմակի փոփոխություններ:
QA-ի գործիքներ:
- Android Studio (դեբագ, լոգների դիտում, Profiler-ի օգտագործում):
- adb հրամաններ՝ պտտման սիմուլյացիայի համար:
- Տարբեր էմուլատորներ և իրական սարքեր՝ տարբեր լուծումներով և Android տարբերակներով։