Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Issue: Passing large data to second Activity

I've got an strange issue. I was looking around the web but didn't find an answer. I'm still a beginner in android programming. So let's go:

All I want to do is calling the second Activity with some data. It works fine with small data, but if the data gets large, the second Activity will not show and the first one finishes. Here's my code of the calling Method:

Intent intent = new Intent(ActivitySearch.this,ActivityResults.class); Bundle bundle = new Bundle(); bundle.putParcelableArrayList("data", searchList); intent.putExtras(bundle); startActivity(intent); 

The part of receiving data is not important. Even if I don't try to read the bundle, the activity will not be called. I've tested this with following lines:

@Override public void onCreate(Bundle savedInstanceState) { Log.d("DEBUG","ActivityResult::onCreate()"); super.onCreate(savedInstanceState); 

OnCreate() gets never called.

Maybe one of yours got an idea... Thank you for your help!

Edit:at least I forgot: This only happens under ICS. The app works like a charme with gingerbread and froyo.

Edit2: Logcat

10-10 14:49:46.951: D/OpenGLRenderer(21696): Flushing caches (mode 0) 10-10 14:49:47.011: V/ActivityThread(22429): com.example.amazonsearch white listed for hwui 10-10 14:49:50.821: W/IInputConnectionWrapper(21696): showStatusIcon on inactive InputConnection 
like image 437
sk2andy Avatar asked Oct 10 '12 12:10

sk2andy


People also ask

How do you pass data into multiple activities?

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.

How do you pass data from second activity to first activity?

Intent i = new Intent(this, SecondActivity. class); startActivityForResult(i, 1); In your SecondActivity set the data which you want to return back to FirstActivity. If you don't want to return back, don't set any.

What component you will use to pass data between activities?

Using Intents and Extras to pass data between Activities — Android Beginner's guide. Whenever you need data from an activity to be in another activity, you can pass data between then while starting the activities. Intents in android offers this convenient way to pass data between activities using Extras.


1 Answers

You are probably getting TransactionTooLargeException

As suggested by google android guide, you could use static fields or singletons to share data between activities.

They recommend it "For sharing complex non-persistent user-defined objects for short duration"

From your code it seems that's exactly what you need.

So your code in ActivitySearch.class could look something like this:

ActivityResults.data = searchList; Intent intent = new Intent(ActivitySearch.this,ActivityResults.class); startActivity(intent); 

Then you can access ActivityResults.data from anywhere in ActivityResults activity after it starts.

For data that need to be shared between user sessions, it's not advisable to use static fields, since application process could be killed and restarted by android framework while app is running in background (if framework need to free resources). In such case all static fields will be reinitialized.

like image 146
Igor B. Avatar answered Sep 24 '22 22:09

Igor B.