Android запускает существующий экземпляр приложения из виджета

1

У меня есть приложение, которое содержит несколько действий... так что скажем, пользователь выполняет навигацию по стеку активности A-> B-> C. Затем нажмите кнопку HOME. Теперь, когда пользователь нажимает на Widget, я просто хочу, чтобы на моем переднем плане появилось приложение/текущий экземпляр приложения. Я НЕ хочу новый экземпляр приложения. Я хочу, чтобы активность C вернулась на передний план.

Я попробовал launchMode для "singleTask" | "singleInstance" "singleTask" | "singleInstance" но это НЕ решает мое желаемое требование, поскольку оно очищает текущий экземпляр и создает новый с активностью A.

Есть идеи, как это решить?

Большое спасибо!

Теги:
android-activity
instance
widget
launchmode

3 ответа

2
Лучший ответ

Мне удалось найти решение. Я установил специализированный режим запуска...

android:launchMode="singleInstance"

Каждый раз, когда пользователь снова нажимает на виджет или значок приложения, запускается действие A по умолчанию. Чтобы открыть приложение, где оно было последним, внутри onCreate() в вашем классе MainActivity просто проверьте isTaskRoot(). Если false, finish() вызова finish() и активность A (MainActivity) не будут отображаться, и приложение откроется там, где оно было в действии B.

2

Использование " singleInstance " - не такая хорошая идея (по многим причинам). Вот лучший способ - от вашего обработчика намерений виджетов:

Intent yourActivity = new Intent(context, YourActivity.class);
yourActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(yourActivity);

Вам не нужно добавлять CLEAR_TOP чтобы вызвать активность C, но вам это нужно, если вы хотите принести A или B.

Я только публикую, потому что между некоторыми 10+ аналогичными сообщениями никто фактически не указал правильный способ сделать это.

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP - последний абзац.

  • 0
    У меня была эта проблема при попытке запустить активность из виджета (службы), это решило ее!
-1

Попробуйте добавить это к своим намерениям

intent.setFlags( Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
  • 0
    это не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню