Это безумие, что никто не упомянул это элегантное решение. Это должен быть принятый ответ.
SplashActivity -> AuthActivity -> DashActivity
if (!sessionManager.isLoggedIn()) {
Intent intent = new Intent(context, AuthActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
context.startActivity(intent);
finish();
} else {
Intent intent = new Intent(context, DashActivity.class);
context.startActivity(intent);
finish();
}
Ключевым моментом здесь является использование intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
для посредника Activity
. После разрыва этого среднего звена DashActivity
будет первым и последним в стеке.
android:noHistory="true"
- плохое решение, так как оно вызывает проблемы, когда полагается на Activity
в качестве обратного вызова, например onActivityResult
. Это рекомендуемое решение, и его следует принять.
Вы, вероятно, могли бы посмотреть настольную библиотеку DShow.NET как руководство по переносу. Недавний блог Алекса Могуренко о воспроизведении аудио и видео с помощью DShow на WinMo также является хорошим ресурсом.
Правка: Думаю, я не ответил прямо на вопрос о стратегии. Да, №3 - лучший вариант. Оберните DShow и назовите его, не добавляйте еще один уровень непонятного косвенного обращения (COM уже достаточно сбивает с толку).