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-ში, იმ შემთხვევებში, როდესაც არ არის საჭირო Activity-ის თავიდან შექმნა. - ViewModel-ის სიცოცხლის ციკლი: ViewModel ინარჩუნებს თავის მდგომარეობას კონფიგურაციის ცვლილების დროს და არ განადგურდება ერთად Activity-სთან.
- Fragment-ების მართვა: სწორად მართვა Fragment-ების სიცოცხლის ციკლის.
პოზიციის ცვლილების ტესტირება:
- ეკრანის ბრუნვის სიმულაცია სხვადასხვა მოწყობილობებზე და ემულატორებზე.
- მონაცემების შენახვა და აღდგენა პოზიციის ცვლილების შემდეგ.
- UI-ის მდგომარეობის შემოწმება (ხილვადობა, ტექსტი, სქროლ, შერჩეული ელემენტები).
- ფონური დავალებების გაჩერება/გაგრძელება.
- მეხსიერების გაჟონვის შემოწმება (Android Profiler-ის გამოყენებით).
- სტრესული ტესტირება: სწრაფი მრავალჯერადი ცვლილებები.
QA-სთვის ინსტრუმენტები:
- Android Studio (დაბლოკვა, ლოგების ნახვა, Profiler-ის გამოყენება).
- adb ბრძანებები ბრუნვის სიმულაციისთვის.
- სხვადასხვა ემულატორი და რეალური მოწყობილობები სხვადასხვა განზომილებებით და Android ვერსიებით.