Sobes.tech
Junior

Чӣ тавр метавон маълумотҳоро аз як Activity ба дигаре дар Android интиқол дод?

sobes.tech AI

Ҷавоб аз AI

Дастурҳои чандин ҳастанд:

  1. 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("объект");
    }
    
  2. Объектҳои 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_объект");
    
  3. 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 - арзиши пешфарз
    
  4. Параметрҳои статикӣ: Маслиҳат дода намешавад, зеро принсипҳои OOP-ро вайрон мекунад ва метавонад ба ҷараёни хотира оварда расонад. Бо эҳтиёт истифода баред ва танҳо барои ҳолатҳои хеле содда.

    // Дар синфи статикӣ ё дигар тағйирёбандаи дастрас
    public static String staticData;
    
    // Дар Activity аввал
    StaticDataHolder.staticData = "маълумот";
    
    // Дар Activity дуввум
    String маълумот = StaticDataHolder.staticData;
    
  5. Маълумотхонаи додаҳо/Файл: Барои миқдори калон ё маълумоте, ки бояд доимӣ нигоҳ дошта шаванд. Маълумот дар базаи додаҳо (SQLite, Room) ё файл нигоҳ дошта мешавад ва Activity дуввум онро мехонад.

  6. 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 мебошад.