Sobes.tech
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 гуногун.