O retorno de chamada onItemSelected do Spinner é chamado duas vezes após uma rotação se a posição diferente de zero for selecionada

Quando eu crio minha atividade, eu configuro um Spinner, atribuindo a ele um ouvinte e um valor inicial. Eu sei que oonItemSelected O retorno de chamada é chamado automaticamente durante a inicialização do aplicativo. O que eu acho estranho é que isso aconteceduas vezes quando o dispositivo é girado, causando-me alguns problemas que eu teria que contornar de alguma forma. Isso faznão acontecer se a seleção inicial do spinner for zero. Consegui isolar o problema, aqui está a atividade mais simples de acioná-lo:

public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("Test","Activity onCreate");
    setContentView(R.layout.activity_main);
    ((Spinner)findViewById(R.id.spinner1)).setSelection(2);
    ((Spinner)findViewById(R.id.spinner1)).setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> spin, View selview, int pos, long selId)
{
    Log.i("Test","spin:"+spin+" sel:"+selview+" pos:"+pos+" selId:"+selId);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
}

E aqui está o logcat mostrado quando o aplicativo é iniciado e, em seguida, o dispositivo é girado:

    I/Test( 9881): spin:android.widget.Spinner@4052f508 sel:android.widget.TextView@40530b08 pos:2 selId:2
    I/Test( 9881): Activity onCreate
    I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2
    I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2

Este é o comportamento esperado? Estou esquecendo de algo?

questionAnswers(8)

yourAnswerToTheQuestion