Завершить подзадачи программно - PullRequest
2 голосов
/ 30 марта 2010

У меня есть действие, которое запускает другое действие с методом startActivityForResult. Я хотел бы завершить вызываемую программу программно, но я не знаю, как это сделать, поскольку в методе onActivityResult() у меня нет информации о вызываемой активности, и я не могу вызвать finish() для него. Как мне этого добиться?

Спасибо

Ответы [ 4 ]

7 голосов
/ 30 марта 2010

Запущенный Activity может закончить себя:

setResult(RESULT_OK);
finish();
3 голосов
/ 30 марта 2010

Попробуйте finishActivity (requestCode) . В соответствии с документацией это позволяет завершить действие, ранее начатое с startActivityForResult. И если есть несколько таких действий с одним и тем же кодом запроса, все будет завершено.

Примечание: я сам на самом деле не пробовал, но так говорится в документации! Поэкспериментируйте с этим, посмотрите, делает ли он то, что вы хотите.

2 голосов
/ 30 марта 2010

В тот момент, когда вы вызываете startActivityForResult, ваша активность будет закрыта или приостановлена, и новая активность будет запущена. Единственное, что может завершить новое действие, - это новое действие.

Вы можете запустить фоновое задание и позволить этому фоновому заданию каким-то образом уведомить ваше действие, которое теперь действие может завершить само.

Я не знаю, будет ли обработчик , созданный в действии A и переданный потоку, оставаться действительным, если действие A приостановлено, а действие B. Но я бы предположил, что это работает, потому что оба действия выполняются в одном потоке, поэтому они должны совместно использовать одну и ту же очередь сообщений.

1 голос
/ 15 апреля 2010

Эта штука просто укусила меня, поэтому я подумал, что добавлю комментарий сюда:


if(readyToFinish()){
  finish()
}
thisCodeWillBeExecuted()

Мой опыт показывает, что весь ваш код в трассировке стека выполняется до деятельность завершена. На данный момент документация не идеальна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...