Можно ли прервать финиш () - PullRequest
1 голос
/ 15 сентября 2011

У меня есть действие, работающее в режиме SingleTask (Android 2.2), которое получает намерения от других действий или служб. Моя деятельность помещает каждое полученное намерение в очередь и что-то с этим делает. По завершении, если не осталось намерения обработать (то есть очередь пуста), он вызывает finish ().

Проблема заключается в том, что он получает намерение сразу после вызова finish (): вызываются методы onNewIntent и onResume, но моя деятельность затем уничтожается (onPause / onDestroy) Android, а намерение не обрабатывается. *

Я знаю, что это довольно капризный сценарий, но меня интересует такое поведение ... поэтому вопрос заключается в следующем: возможно ли прервать Finish () и / или возобновить действие после того, как Finish () имеет был назван?

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Похоже, вы пытаетесь воссоздать IntentService

0 голосов
/ 15 сентября 2011

при вызове метода finish () вызывается метод onDestroy (), и чем ваша активность мертва:)

эта операция может быть снова запущена по какому-либо намерению, но oncreate будет вызываться не onNewIntent

Важным примечанием является то, что намерение не может быть получено между оператором finish () и методом onDrestroy!

, поэтому, если вызывается метод finish, каждое новое намерение для вашей деятельности будет вызываться вызовом onCreate ()

так что вам не о чем беспокоиться

вам не следует пытаться прерывать финиш, который невозможен, потому что это атомарная операция. Но вам нужно пересмотреть свою логику и усовершенствовать методы oncreate и onNewIntentизящно обработать ваш сценарий

...