При запуске с помощью значка на главном экране Android всегда запускает действие с фильтром android.intent.action.MAIN
в вашем AndroidManifest.xml
, если только приложение не запущено (в этом случае оно, очевидно, восстановит действие поверх стек).
Для достижения того, что вы описали, вы можете просто сохранить последнее видимое действие в SharedPreferences
и иметь действие Диспетчер , которое запускает последнее действие в соответствии с предпочтениями.
Таким образом, в каждом упражнении вы хотите автоматически перезапустить:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
А Диспетчер активность похожа на следующую:
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
Примечания
- Вы можете создать базовый класс для
onPause
переопределения
- Действие Диспетчер , очевидно, должно быть действием
android.intent.action.MAIN