OnActivityResult не срабатывает, если режим запуска активности singleInstance
У меня есть Activity, который в основном является моей основной деятельностью, а его режим запуска - единый экземпляр. Но из-за singleInstance обратный вызов onActivityResult()
не срабатывает. И если я изменю режим запуска в моем файле манифеста в любой другой режим, он отлично работает.
Можете ли вы объяснить, почему этот обратный вызов не работает?
Ответы
Ответ 1
Я считаю, что проблема в том, что singleInstance не позволяет активности вызываемого абонента существовать в той же задаче, что и вызывающий, поэтому он не может вернуть значение вызывающему.
Рассмотрим вместо этого использование singleTask:
singleTask
Система создает активность на корень новой задачи и намерение к нему. Однако, если экземпляр деятельности уже существует, система направляет намерение экземпляр путем вызова его onNewIntent(), а не создавая новый.
SingleInstance
То же, что и "singleTask", за исключением того, что система не запускает никаких других деятельности в пример. Деятельность всегда единственный и единственный член своей задачи.
http://developer.android.com/guide/topics/manifest/activity-element.html
Ответ 2
Если активность singleInstance
, она будет единственной в задаче, поэтому она всегда будет вершиной задачи. Поэтому, когда вы вызываете startActivityForResult
, он немедленно запускает метод обратного вызова.
Ответ 3
A " singleInstance", никакие другие действия не могут быть частью его задачи. Это единственное занятие в задаче. Если он запускает другое действие, эта деятельность назначается другой задаче. Активность всегда является единственным и единственным членом своей задачи.
Я думаю, что onActivityResult
не будет работать с singleInstance