Как правильно накапливать данные между Activity?

В Android для передачи данных между Activity существует несколько способов. Рассмотрим их подробнее:

1. Использование Intent'ов:
Intent может быть использован для передачи данных между Activity. Для этого вы можете добавить данные в Intent с помощью методов putExtra(). Например, чтобы передать строку между двумя Activity, вы можете использовать следующий код в отправляющей Activity:

Intent intent = new Intent(this, ReceivingActivity.class);
intent.putExtra("message", "Привет, мир!");
startActivity(intent);

А в принимающей Activity вы можете получить эту строку следующим образом:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String message = extras.getString("message");
    // Используйте полученные данные по своему усмотрению
}

2. Использование Bundle:
Вы также можете использовать объект Bundle для передачи данных между Activity. В отправляющей Activity вы можете создать новый экземпляр Bundle, добавить в него данные и затем передать его в Intent:

Intent intent = new Intent(this, ReceivingActivity.class);
Bundle bundle = new Bundle();
bundle.putString("message", "Привет, мир!");
intent.putExtras(bundle);
startActivity(intent);

А в принимающей Activity вы можете получить содержимое Bundle следующим образом:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String message = extras.getString("message");
    // Используйте полученные данные по своему усмотрению
}

3. Использование Singleton-класса:
Вы можете создать Singleton-класс, который будет предоставлять доступ к данным, которые должны быть общими для нескольких Activity. Например:

public class DataHolder {
    private static DataHolder instance;
    private String data;

    private DataHolder() {
        // Конструктор
    }

    public static synchronized DataHolder getInstance() {
        if (instance == null) {
            instance = new DataHolder();
        }
        return instance;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

В отправляющей Activity вы можете установить значение переменной data следующим образом:

DataHolder.getInstance().setData("Привет, мир!");

А в принимающей Activity вы можете получить значение переменной data следующим образом:

String message = DataHolder.getInstance().getData();
// Используйте полученные данные по своему усмотрению

4. Использование setResult() и onActivityResult():
Если вам необходимо вернуть результат из одной Activity в другую, вы можете использовать метод setResult() и onActivityResult(). В отправляющей Activity, когда вы хотите вернуть данные, вызовите setResult() и закройте текущую Activity:

Intent resultIntent = new Intent();
resultIntent.putExtra("message", "Привет, мир!");
setResult(Activity.RESULT_OK, resultIntent);
finish();

А в принимающей Activity можно получить возвращенные данные в методе onActivityResult():

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == YOUR_REQUEST_CODE) {
            String message = data.getStringExtra("message");
            // Используйте полученные данные по своему усмотрению
        }
    }
}

Это лишь несколько способов накапливания данных между Activity в Android. Выбор конкретного метода зависит от ваших требований и ситуации, в которой вы находитесь.