Android запускает существующий экземпляр приложения из виджета
У меня есть приложение, которое содержит несколько действий... так скажем, пользователь перемещается по стеку действий A->B->C. Затем нажимает кнопку HOME. Теперь, когда пользователь нажимает на виджет, я просто хочу вывести существующий / текущий экземпляр моего приложения на передний план. Я не хочу новый экземпляр приложения. Я хочу, чтобы деятельность С вернулась на передний план.
Я пытался запустить режим, чтобы "singleTask" | "singleInstance"
но это НЕ решает моего желаемого требования, так как очищает текущий экземпляр и создает новый с действием A.
Есть идеи как решить это?
Большое спасибо!
3 ответа
Мне удалось найти решение. Я установил специализированный режим запуска....
android:launchMode="singleInstance"
Каждый раз, когда пользователь снова нажимает на виджет или значок приложения, запускается действие A по умолчанию. Чтобы открыть приложение там, где оно было в последний раз, внутри onCreate()
метод в вашем MainActivity
класс просто проверь isTaskRoot()
, Если ложь, позвоните finish()
и действие A (MainActivity) не появится, и приложение откроется там, где оно было в действии B.
Используя "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
вспомнить действие С, но оно вам нужно, если вы хотите взять с собой А или Б.
Я пишу только потому, что среди более 10 похожих постов никто не указал правильный способ сделать это.
http://developer.android.com/reference/android/content/Intent.html - последний абзац.
Попробуйте добавить это в свои намерения
intent.setFlags( Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);