Android - перенесите активность вперед из класса приложений

Я пытаюсь вывести активность на фронт. Я нашел много вопросов, похожих на это, но ни один из них на самом деле не работает.

Я всегда держу ссылку на текущую активность в переменной в классе приложения. Пока приложение работает в фоновом режиме (после срабатывания onPause), если приходит какое-либо сообщение, мне нужно перенести ту же активность на передний план и отобразить сообщение. Единственный способ, которым я получил это, работал..

Intent i = new Intent(mCurrentActivity, JoboffersActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

Проблема, с которой я столкнулся, заключается в том, что она воссоздает действие, которого я хотел избежать. Я старался singleInstance а также singleTask оба в манифесте. Если я не добавлю FLAG_ACTIVITY_CLEAR_TOP, при нажатии клавиши "Назад" он возвращает меня к предыдущему экземпляру того же действия. Даже если я добавлю sigleInstance он создает два экземпляра одного и того же действия. Если я не добавлю FLAG_ACTIVITY_NEW_TASK тогда он показывает ошибку Calling startActivity() извне контекста действия требуется FLAG_ACTIVITY_NEW_TASK флаг

1 ответ

Попробуйте добавить еще один флаг FLAG_ACTIVITY_SINGLE_TOP к своему намерению. Согласно документации Android, комбинация этих двух флагов:

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

выводит текущий экземпляр Activity на передний план http://developer.android.com/reference/android/content/Intent.html

Другие вопросы по тегам