Ինչպե՞ս ապահովել համակարգի ընթացիկ վիճակի պահպանությունը կոնֆիգուրացիան փոխելիս։
sobes.tech AI
Պատասխան AI-ից
Android-ում, համակարգի ընթացիկ վիճակը պահելու համար կոնֆիգուրացիայի փոփոխության ժամանակ (օրինակ, էկրանին պտտում) օգտագործվում է Activity կամ Fragment-ի վիճակի պահպանման մեխանիզմը:
Հիմնական մեթոդներ՝
-
onSaveInstanceState(Bundle outState) — մեթոդ, որի մեջ անհրաժեշտ տվյալները կարող եք պահպանել Bundle օբյեկտում: Այս տվյալները հասանելի կլինեն Activity նորից ստեղծելիս onCreate կամ onRestoreInstanceState մեթոդներում:
-
ViewModel — Android-ի ճարտարապետական բաղադրիչներից մեկը, որը պահպանում է տվյալները կոնֆիգուրացիայի փոփոխության ժամանակ և չի վերականգնվում միասին Activity-ի հետ:
-
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)
}
}
Այսպիսով՝ կոնֆիգուրացիայի փոփոխության ժամանակ տվյալները չեն կորցվի, և օգտվողը կտեսնի նույն ինտերֆեյսը և վիճակը։