Чӣ тавр метавон маълумотҳоро аз як Activity ба дигаре дар Android интиқол дод?
sobes.tech AI
Ҷавоб аз AI
Дастурҳои чандин ҳастанд:
-
Intent Extras: Роҳи маъмултарин. Маълумот дар
Bundleбаста мешавад ва баIntentилова карда мешавад.// Дар Activity аввал Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("калид", "арзиш"); // Типҳои primitives intent.putExtra("объект", new MySerializableObject()); // Serializable startActivity(intent); // Дар Activity дуввум Bundle extras = getIntent().getExtras(); if (extras != null) { String арзиш = extras.getString("калид"); MySerializableObject объект = (MySerializableObject) extras.getSerializable("объект"); } -
Объектҳои Parcelable: Монанд ба
Serializable, аммо самараноктар барои объектҳое, ки бояд зуд интиқол дода шаванд. Имплементацияи интерфейсиParcelableталаб мешавад.// Дар Activity аввал Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_объект", new MyParcelableObject()); startActivity(intent); // Дар Activity дуввум Intent intent = getIntent(); MyParcelableObject parcelableОбъект = intent.getParcelableExtra("parcelable_объект"); -
Shared Preferences: Барои интиқоли миқдори ками маълумот, ки бояд байни оғозҳои барнома нигоҳ дошта шаванд.
// Дар Activity аввал SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("калид", "арзиш"); editor.apply(); // ё commit() // Дар Activity дуввум SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); String арзиш = preferences.getString("калид", null); // null - арзиши пешфарз -
Параметрҳои статикӣ: Маслиҳат дода намешавад, зеро принсипҳои OOP-ро вайрон мекунад ва метавонад ба ҷараёни хотира оварда расонад. Бо эҳтиёт истифода баред ва танҳо барои ҳолатҳои хеле содда.
// Дар синфи статикӣ ё дигар тағйирёбандаи дастрас public static String staticData; // Дар Activity аввал StaticDataHolder.staticData = "маълумот"; // Дар Activity дуввум String маълумот = StaticDataHolder.staticData; -
Маълумотхонаи додаҳо/Файл: Барои миқдори калон ё маълумоте, ки бояд доимӣ нигоҳ дошта шаванд. Маълумот дар базаи додаҳо (SQLite, Room) ё файл нигоҳ дошта мешавад ва Activity дуввум онро мехонад.
-
ViewModel (ҳамроҳ бо LiveData): Дар контексти компонентҳои меъморӣ, ViewModel усули афзалиятноки идоракунии маълумоти UI мебошад. Маълумот байни Activity тавассути ViewModel ё тавассути рӯйдодҳо дар LiveData интиқол дода мешавад.
// Дар Activity аввал (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("data_key", "data_value") } startActivity(intent) // Дар Activity дуввум (Kotlin) val data = intent.getStringExtra("data_key")
Интихоби усул аз навъи ва миқдори маълумоти интиқолшаванда, инчунин аз талаботҳои нигоҳдорӣ вобаста аст. Интиқоли маълумот тавассути Intent Extras стандарт барои миқдори ками маълумот ва дар вақти гузариш байни Activity мебошад.