android - 如何等到线程完成

标签 android multithreading android-asynctask

我正在寻找有关实现以下任务的最佳方法的一些建议(我当前的方法非常幼稚并且导致我出现问题)

以下是我的应用程序启动时应该发生的事情的总结:

  1. 首先提示用户登录 facebook。我用 Facebook 完成时监听的 DialogListener。

  2. 完成上述任务后,我使用 AsyncFacebookRunner 收集一些 有关用户的信息。我用 AsyncFacebookRunner.RequestListener() 监听这个 完成。

  3. 完成任务 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/

相关文章:

java - 从数据库填充ExpandableListView - 无法正常工作

java - Android 上的数组到字符串

multithreading - 任何具有*无*线程库的体面方案实现?

.net - 调试多线程应用程序的建议

java - 为什么下面的程序在没有 sleep 的情况下会进入死锁状态,但在 sleep 状态下它会执行所有三个线程并正常终止?

java - 将 JobIntentService 绑定(bind)到 Activity

java - 用真实设备连接xampp localhost数据库

android - 如何将 C++ 文件正确链接到 Android Studio 中的现有 Android 项目?

android - 无法添加窗口 -- token null 不适用于应用程序

java - Android-Java 客户端-服务器 - AsyncTask 中的 Toast 崩溃应用程序