Stefan, vous jamais trouver une réponse à cela? J'ai mis en place un cas de test pour cela et je vois la même (perplexe) comportement...je vais coller le code ci-dessous dans le cas où quelqu'un arrive et voit quelque chose d'évident:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example" >
<uses-sdk android:minSdkVersion="3"/>
<application android:icon="@drawable/icon" android:label="testSingleTask">
<activity android:name=".ActivityA"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".ActivityB"/>
</application>
</manifest>
ActivityA.java:
public class ActivityA extends Activity implements View.OnClickListener
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.main );
View button = findViewById( R.id.tacos );
button.setOnClickListener( this );
}
public void onClick( View view )
{
//Intent i = new Intent( this, ActivityB.class );
Intent i = new Intent();
i.setComponent( new ComponentName( this, ActivityB.class ) );
startActivity( i );
}
}
ActivityB.java:
public class ActivityB extends Activity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.layout_b );
}
}
J'ai essayé de changer minSdkVersion en vain. Cela semble juste être un bug, du moins d'après la documentation, qui stipule ce qui suit:
Comme indiqué ci-dessus, il n'y a jamais plus d'une instance d'un "singleTask" ou "instance unique" de l'activité, de sorte que l'instance est prévu pour gérer toutes les nouvelles intentions. Une "instance unique" de l'activité est toujours en haut de la pile (puisque c'est la seule activité à la tâche), de sorte qu'il est toujours en position de gérer l'intention. Cependant, un "singleTask" activité peut ou peut ne pas avoir d'autres activités au-dessus de la pile. Si c'est le cas, il n'est pas en position de gérer l'intention, et l'intention est supprimée. (Même si l'intention est tombé, son arrivée aurait causé la tâche à venir au premier plan, où il demeure.)