I know it's rude to reply to myself, but I create a very simple demo
of this problem. This seems to effect Spinners, but not TextViews.
I am not sure how to upload the .apk, but just e-mail me for it.
I tested this on Nexus One. Basically, if you just change
orientation, it's working fine, but if you change it to landscape then
back to portrait before the Activity had a chance to be restarted, the
Spinner loses its saved state. I will be creating a bug report for
this.
package com.test.spinnerconfig;
import android.app.Activity;
import android.os.Bundle;
import android.widget.AbsSpinner;
import android.widget.ArrayAdapter;
import android.widget.SpinnerAdapter;
public class SpinnerConfigTest extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AbsSpinner spinner = (AbsSpinner)findViewById(R.id.spinner);
CharSequence[] items = { "1", "2", "3" };
SpinnerAdapter adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, android.R.id.text1, items);
spinner.setAdapter(adapter);
if (savedInstanceState == null)
// Set it to "2", we would expect it to stay that way
spinner.setSelection(1);
// This should take a little while
for (int i = 0; i < 1000000; i++) ;
}
}
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Spinner android:id="@+id/spinner" android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</merge>
On Jan 23, 6:56 am, Zsolt Vasvari <[email protected]> wrote:
> On the emulator, once in a while (1 in 10 times maybe), you get two
> onCreate's fired on screen rotation. The 2nd one has no proper saved
> instance data. This is not an issue, since it's just the emulator.
>
> Testing on Nexus One: During normal orientation change, I cannot
> cause two onCreate events in a row like in the emulator.
>
> BUT, if I very quickly flip the phone between landscape/portrait, the
> system seems to get confused and calls onCreate() without its saved
> instance data, just like on the emulator does. When I say "without
> saved instance data", I don't mean that the Bundle is NULL, but
> instead that it's empty or incomplete -- haven't investigated it to
> that level of detail yet.
>
> While flipping the phone that quickly is not a completely normal usage
> scenario, it can happen quite easily if you use the phone laying on
> your side. I think this is a very serious (race condition) problem
> that can lead to potential data corruption in every application.
>
> On Jan 5, 2:24 am, Business Talk <[email protected]> wrote:
>
>
>
> > It's not just 1.6. the higher versions do the same. It looks like
> > rotation does more than just updetes the UI. I also failed to find any
> > reference to this problem.
>
> > On Jan 4, 8:16 am, Pawel Kapala <[email protected]> wrote:
>
> > > Hello.
>
> > > With following simple code (on clean, new android project):
>
> > > public class RotationTest extends Activity {
>
> > > private static final String LOGTAG = "RotationTest";
>
> > > @Override
> > > public voidonCreate(Bundle savedInstanceState) {
> > > super.onCreate(savedInstanceState);
> > > setContentView(R.layout.main);
> > > Log.d(LOGTAG, "onCreate():");
> > > }
>
> > > @Override
> > > protected void onDestroy() {
> > > super.onDestroy();
> > > Log.d(LOGTAG, "onDestroy():");
> > > }
>
> > > }
>
> > > theonCreate/onDestroy pair is called twice when rotating from
> > > landscape -> portrait on Android 1.6 emulator.
>
> > > Here is the snippet of LogCat (doing rotation to landscape and back to
> > > portrait):
> > > 01-04 14:05:35.895: DEBUG/RotationTest(704):onCreate():
> > > 01-04 14:13:53.514: DEBUG/RotationTest(704): onDestroy():
> > > 01-04 14:13:53.916: DEBUG/RotationTest(704):onCreate():
> > > 01-04 14:14:02.035: DEBUG/RotationTest(704): onDestroy():
> > > 01-04 14:14:02.604: DEBUG/RotationTest(704):onCreate():
> > > 01-04 14:14:02.716: DEBUG/RotationTest(704): onDestroy():
> > > 01-04 14:14:03.015: DEBUG/RotationTest(704):onCreate():
>
> > > On the other hand, when running the application on the G1 phone, the
> > > problem does not occur, when the keyboard is slid (then the rotation
> > > changes).
>
> > > I've tried to find an open issue or a similar thread but I am yet
> > > unsuccessful.
>
> > > Could anyone give a pointer or a description of this behavior?
>
> > > Has anyone experienced it on Eclair or later(!) ?- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en