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