我正在寻找有关实现以下任务的最佳方法的一些建议(我当前的方法非常幼稚并且导致我出现问题)
以下是我的应用程序启动时应该发生的事情的总结:
首先提示用户登录 facebook。我用 Facebook 完成时监听的 DialogListener。
完成上述任务后,我使用 AsyncFacebookRunner 收集一些 有关用户的信息。我用 AsyncFacebookRunner.RequestListener() 监听这个 完成。
完成任务 2 后,我将一些信息存储在 SharedPreferences 中
这一切都非常出色。这是问题所在...我需要使用 http POST 中的一些所述信息来获取服务器上的数据。数据用于填充 GridView 。为此,我正在使用 Asynctask。我的问题在于不知道数据何时存在于 SharedPreferences 中。
现在在 doInBackground 中我有一个这样的循环:
while (true)
{
if (not a valid value of something in SharedPreferences)
Thread.sleep(500);
else
break
}
这非常丑陋、幼稚,并且给我带来了一些问题。在这一点上,我觉得我应该重写整个事情,希望有人能提出更好的方法!
最佳答案
向 SharedPreferences
注册一个 OnSharedPreferenceChangedListener
,以便在其中的数据更改时得到通知。
关于android - 如何等到线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850943/