facebook android sdk认证是异步的。如何处理它?

facebook android sdk认证是异步的。如何处理它?

问题描述:

我在我的应用程序中集成了FB登录。我在处理的异步性方面遇到问题。如果我没有登录到FB,那么会显示一个对话框来输入我的密码,但是当我已经登录时,整个过程变得异步,并且我的原始活动也会通过。这给我造成了问题,因为我的逻辑取决于FB认证的结果。我相信其他人肯定会遇到它。我如何处理这个问题?facebook android sdk认证是异步的。如何处理它?

编辑:

换句话说我的问题是,我打电话的功能立即返回。它通过产生一个线程来完成它,并通过我实现的回调返回结果。在这种情况下,我想等待该函数返回(或要调用的回调函数),并且仅在之后继续处理。

任何指针,非常感谢。

感谢 - P

+0

你使用Facebook SDK?可能将你正在运行的某些代码粘贴到问题中,我相信他们已经添加了某种回调来挂钩。 – schwiz 2011-04-24 19:34:04

好了,你已经与网络交互将是异步​​的几乎一切,所以在你的应用程序的设计意识到这一点。在Android中处理这类逻辑最受欢迎的方式之一就是创建AsyncTasks。您将启动身份验证请求AsyncTask并在执行操作时显示进度对话框。返回时,隐藏进度对话框并继续使用应用程序逻辑。

+2

要么是线程,要么是线程。 – 2011-04-24 16:49:22

+0

这不是我的问题。其实相反。请参阅我对上述问题所做的修改。调用函数产生一个线程并立即返回。我想在做我的事情之前等待线程功能完成。 – user220201 2011-04-24 17:35:21

+0

我想我仍然对你的问题感到困惑,抱歉。 – dmon 2011-04-24 18:26:00

冻结主线程直到异步操作完成是一个非常糟糕的主意。这是异步的原因。显示模式进度窗口更好,让控制返回到操作系统并在完成后恢复工作。通过这种方式,您可以获得两全其美的体验 - 用户在身份验证结束之前无法做任何事情,并且您不会冻结手机。

这里是认证另一个例子的代码,你可以用RequestListener得到回调等

https://github.com/wareninja/generic-oauth2-login-for-android