Sobes.tech
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);
            }
        }
    }
    
  • Конфигурация өзгерістерін өңдеу: AndroidManifest.xml-те android:configChanges жариялау, егер Activity қайта құру қажет болмаса (бұндай сценарий сирек, көбінесе басқа конфигурация өзгерістеріне арналған).
  • ViewModel өмірлік циклі: ViewModel конфигурация өзгергенде күйін сақтайды және Activity-мен бірге жойылмайды.
  • Фрагменттер: Фрагменттердің өмірлік циклін дұрыс басқару.

Позицияны ауыстыруды тестілеу ерекшеліктері:

  • Әртүрлі құрылғылар мен эмуляторларда экранды бұруды симуляциялау.
  • Позицияны өзгерткеннен кейін деректерді сақтау және қалпына келтіруді тестілеу.
  • UI күйін тексеру (көрінуі, мәтін, скролл, таңдалған элементтер).
  • Фондық тапсырмалардың тоқтатылуын/жалғастырылуын тестілеу.
  • Жады ағып кетуін тексеру (Android Profiler пайдалану).
  • Стресс-тест: бірнеше рет жылдам позицияны өзгерту.

QA үшін құралдар:

  • Android Studio (қателерді түзету, логтарды қарау, Profiler қолдану).
  • adb командалары арқылы бұруды симуляциялау.
  • Әртүрлі эмуляторлар мен нақты құрылғылар, әртүрлі рұқсаттар мен Android нұсқалары.