Respuesta tardía, pero agrega algo de profundidad a otras respuestas. Todo se reduce a qué quieres que suceda con otras actividades iniciadas a partir de esa actividad.
Opción 1: solo esta actividad no debe tener un historial de actividad de llamadas
Entonces solo haz:
Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Opción 2: todas las actividades iniciadas a partir de esa actividad específica no deben tener historial
Luego agregue el manifiesto de la actividad de llamada:
android:noHistory="true"
Pero si desea tener un historial en una nueva actividad, debe eliminar manualmente la bandera:
Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Espero que aclare otras respuestas :)
finish()
inmediatamente despuésstartActivity(...)
. De esa manera, si el usuario presiona ATRÁS desde 'principal', no habrá nada a lo que volver.