Sobes.tech
Junior — Middle

Ինչպե՞ս ապահովել համակարգի ընթացիկ վիճակի պահպանությունը կոնֆիգուրացիան փոխելիս։

sobes.tech AI

Պատասխան AI-ից

Android-ում, համակարգի ընթացիկ վիճակը պահելու համար կոնֆիգուրացիայի փոփոխության ժամանակ (օրինակ, էկրանին պտտում) օգտագործվում է Activity կամ Fragment-ի վիճակի պահպանման մեխանիզմը:

Հիմնական մեթոդներ՝

  1. onSaveInstanceState(Bundle outState) — մեթոդ, որի մեջ անհրաժեշտ տվյալները կարող եք պահպանել Bundle օբյեկտում: Այս տվյալները հասանելի կլինեն Activity նորից ստեղծելիս onCreate կամ onRestoreInstanceState մեթոդներում:

  2. ViewModel — Android-ի ճարտարապետական բաղադրիչներից մեկը, որը պահպանում է տվյալները կոնֆիգուրացիայի փոփոխության ժամանակ և չի վերականգնվում միասին 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)
    }
}

Այսպիսով՝ կոնֆիգուրացիայի փոփոխության ժամանակ տվյալները չեն կորցվի, և օգտվողը կտեսնի նույն ինտերֆեյսը և վիճակը։