2013-05-23 2 views
1

Я реализовал пользовательский AccountManager вдоль линий Github Gauges или Github Android ClientAccountManagerFuture не бросать OperationCanceled при нажатии Назад

Более конкретно, я реализации:

  • AccountAuthenticatorService (как here)
  • AccountAuthenticator (например, here)
  • ApiKeyProvider, который называет accountManagerFuture.getResult()

Когда вызывается accountManagerFuture.getResult(), мой LoginActivity запускается, как и должно быть. Однако, когда нажата кнопка «Назад», я не получаю OperationException, как должно быть (в проекте GitHub Gauges это похоже, что он работает)

У кого-нибудь есть идея, как начать отлаживать это?

ответ

2

Что значит «когда accountManagerFuture.getResult() называется«? Поддерживаете ли вы ссылку на будущее после нажатия кнопки «Назад» и затем вызываете getResult() в какой-то момент? Поскольку OperationCanceledException будет вызываться только в том случае, если вы явно вызываете этот метод после того, как операция была отменена.

Понимание потока событий - хорошее место для начала отладки проблемы. Когда вы нажимаете кнопку «Назад», вызывается onBackPressed(); onBackPressed() затем вызовет finish(), и в соответствии с исходным кодом для класса AccountAuthenticatorActivity метод override finish() отправит сигнал, который в конечном итоге отменяет задачу. Это поможет вам начать?

Также обратите внимание, что при нажатии кнопки «Назад» операция отменяется только в том случае, если операция все еще запущена. Если операция уже завершена, исключение не будет выбрано (поскольку в настоящий момент активная операция для рамки не отменяется). Другими словами, вы не можете получить исключение, когда вы нажмете кнопку возврата ... все зависит от того, завершена ли операция или нет.

Если у вас все еще есть проблемы, я бы подумал о добавлении кода в исходный вопрос, потому что иначе нам будет сложно помочь вам в дальнейшем. :)

+1

Большое спасибо. Ключевое значение, которое вы упомянули, - это финиш(), который переопределяется AccountAuthenticatorActivity. В какой-то момент я изменил свою деятельность, чтобы наследовать от PagerActivity и забыл скопировать-вставить методы AccountAuthenticatorActivity! –

Смежные вопросы