Sobes.tech
Junior — Middle

როგორ უზრუნველვყოთ სისტემის მიმდინარე მდგომარეობის შენარჩუნება კონფიგურაციის ცვლილებისას?

sobes.tech AI

პასუხი AI-სგან

Android-ში, კონფიგურაციის ცვლილების დროს (მაგალითად, ეკრანის ბრუნვისას) სისტემის მიმდინარე მდგომარეობის შენახვა ხდება Activity ან Fragment-ის მდგომარეობის შენახვის მექანიზმის გამოყენებით.

ძირითადი მეთოდები:

  1. onSaveInstanceState(Bundle outState) — მეთოდი, რომელშიც შესაძლებელია საჭირო მონაცემების შენახვა Bundle ობიექტში. ეს მონაცემები ხელმისაწვდომი იქნება Activity-ის ხელახლა შექმნისას onCreate ან onRestoreInstanceState მეთოდებში.

  2. ViewModel — არქიტექტურული კომპონენტებიდან ერთია, რომელიც ინახავს მონაცემებს კონფიგურაციის ცვლილების დროს და არ იქმნება ხელახლა ერთად Activity-სთან.

  3. UI კომპონენტების მდგომარეობის შენახვა — ბევრი სტანდარტული ვიჯეტი ავტომატურად ინახავს თავის მდგომარეობას, თუ მას აქვს უნიკალური იდენტიფიკატორი.

მაგალითი: გამრიცხველის მდგომარეობის შენახვა:

class MainActivity : AppCompatActivity() {
    private var counter = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        counter = savedInstanceState?.getInt("counter_key") ?: 0
        // განაახლეთ UI მიმდინარე counter მნიშვნელობით
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("counter_key", counter)
    }
}

ამ გზით, კონფიგურაციის ცვლილების დროს მონაცემები არ დაიკარგება და მომხმარებელი იგივე ინტერფეისი და მდგომარეობა იხილავს.