The way I prefer passing large data is through using enums.
Some advantages of this approach:
No need to create singletons, you always have single instance of your enum;
Data is properly encapsulated;
Reference is deleted right after the activity receives it
Here is an example:
package com.jyvee.arguments;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class SomeActivity extends Activity {
// Names for the arguments we pass to the
// activity when we create it
private final static String ARG_STRING = "ARG_STRING";
private final static String ARG_INT = "ARG_INT";
private String stringField;
private int intField;
private List