Middle
Тафовутҳои тағйири мақомҳо дар платформаи Android чист?
sobes.tech AI
Ҷавоб аз AI
Ҳангоми тағйир додани мавқеъҳо (масалан, гардиши экран ё дигар тағйиротҳои конфигуратсия) дар Android, фаъолият ҳозира нобуд мешавад ва нав сохта мешавад.
Чӣ рӯй медиҳад:
- Ҳайвонотҳои ҳаёти кӯҳнаи фаъолият даъват мешаванд:
onPause(),onStop(),onDestroy(). - Ҳамагон фаъолият аз хотира хориҷ карда мешавад.
- Фаъолияти нав сохта мешавад.
- Ҳайвонотҳои ҳаёти кӯҳнаи фаъолият даъват мешаванд:
onCreate(),onStart(),onResume().
Масъалаҳо барои QA:
- Заҳр кардани маълумот: Маълумоти номуайян дар майдонҳои воридот, унсурҳои интихобшудаи рӯйхат ва ғайра метавонанд гум шаванд, агар нигоҳдории онҳо амалӣ нашуда бошад.
- Ҳолати UI: Намудҳои элементҳо, ҷойгиршавии скрол, табҳо ва дигар ҳолатҳои UI метавонанд ба ҳолати пешфарз баргарданд.
- Амалиётҳои пасзамина: Вазифаҳои пасзаминаи оғозшуда (масалан, боркунии маълумот) метавонанд қатъ ё нодуруст анҷом дода шаванд.
- Камбудиҳо дар иҷроиш: Тағйироти конфигуратсия метавонанд ба сустӣ ё қатъ шудани барнома оварда расонанд, зеро фаъолиятро такрор месозанд.
- Проблемаҳои хотира: Корношои нодуруст бо захираҳо (масалан, 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 ҳолати худро дар тағйироти конфигуратсия нигоҳ медорад ва бо фаъолият нест мешавад.
- Фрагментҳо: Идоракунии дурустии ҳаёти Фрагментҳо.
Тестҳои тағйироти ҷойгиршавӣ:
- Симулятсия кардани гардиши экран дар дастгоҳҳои гуногун ва эмуляторҳо.
- Санҷиши захира ва барқарор кардани маълумот пас аз тағйироти ҷойгиршавӣ.
- Санҷиши ҳолати UI (намуд, матн, скрол, унсурҳои интихобшуда).
- Санҷиши қатъ/идома додани вазифаҳои пасзамина.
- Санҷиши талафоти хотира (бо истифода аз Android Profiler).
- Stress testing: тағйироти зуд-зуд дар ҷойгиршавӣ.
Асбобҳо барои QA:
- Android Studio (барои дебаг, тамошои логҳо, истифодаи Profiler).
- командаҳои adb барои симулятсия кардани гардиш.
- Эмуляторҳо ва дастгоҳҳои воқеӣ бо тасвирҳо ва версияҳои Android гуногун.