2013-05-04 2 views
0

Я столкнулся с очень странным поведением Android.Активность SingleTask не возвращает результат?

У меня есть два вида деятельности: A и B. A запускает B с startActivityForResult, а затем проверяет результат результата B. Это может быть RESULT_OK, RESULT_CANCELLED или RESULT_FIRSTUSER. Как бы я ни старался, всякий раз, когда я возвращал RESULT_FIRSTUSER из B, A увидел RESULT_CANCELLED.

Из отчаяния я подумал: «Может быть, это потому, что B является активностью SingleTask», поэтому я изменил манифест и удалил определение SingleTask. Это сработало, теперь RESULT_FIRSTUSER правильно возвращается в A.

Почему?

ответ

4

startActivityForResult работает только в том случае, если запущенная деятельность находится в той же задаче, что и запуск. Официальный документ по http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, INT, android.os.Bundle)

Следует отметить, что этот метод должен быть использован только с целью протоколов, которые определены для возврата результата. В других протоколах (например, ACTION_MAIN или ACTION_VIEW) вы не можете получить результат, если ожидаете. Например, если действие, которое вы запускаете, использует режим запуска singleTask, оно не будет запускаться в вашей задаче, и вы сразу получите результат отмены.

+0

Это объясняет, почему я также видел, как моя деятельность B началась дважды! – zmbq