n0tb0dy писал(а):а может поясните мне еще смысл параметра запуска активности singleTop?
ведь ее экземпляр не может быть создан только если она находится на вершине текущей задачи
по существу какой смысл запускать активность из самой себя?
если активность с этим параметром запустить из другого приложения, то ее экземпляр все равно будет создан, в другой задаче
если я правильно понимаю, когда вы возвращаетесь в активити, которая была объявленна, как singleTop из другой активити вызывая интент, срабатывает
onCreate() (и далее по циклу) вместо требуемого вызова
onNewIntent(), т.е. действительно создается новый инстанс, но методы интента не отрабатывают и передать данные например не получится(хотя хрен его знает я не пробывал их "насиловать"
). А, если активити помеченная .как singleTop уже находится наверху стека - вызванна будет она, и интент не создастся. И чтобы это сработало нужно делать:
[syntax=java5]Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);[/syntax]
Это как бы противоположно:
android:launchMode="singleInstance" Т.е. тут подразумевается, что интент не будет создавать активити, а всегда будет вызывать уже существующую из стека. Тут кстати придется при переходе явно вызывать метод finish(), чтобы "убить" ту, с которой выполняется переход.
Это просто более явный способ управление поведением актвивити при их переключении.