目标:
使用 Google App Engine 服务器和 Android 客户端,我试图将 Google 地图放在 Android 客户端用户叠加层上。每 30 秒我轮询一次服务器并获取包含用户的 Vector 并将其添加到地图中。
当前状态:
我在一个新线程中使用了所有东西,所以在运行应用程序后我得到:
奇怪的行为(延迟覆盖,多个覆盖),然后用ConcurrentModificationException
.
在阅读了一下之后,我发现我需要使用AsyncTask。
如果我错了,请纠正我,但我知道在 onCreate 的 Activity 中所做的一切都在 UIhread 中“运行”,所以我需要将“逻辑”(所有网络处理)放在 doInBackground 和所有 UI 处理中,比如把在 onPostExecute 中覆盖在地图上。
我的问题是:
1)在我正在做的当前状态下:
new Thread()
{
@Override
public void run()
{
super.run();
while(true)
{
SystemClock.sleep(30000);
Vector responseFromServer = getUsersVectorFromServer();
putNewOnlineUserOnTheMap();
}
}
}.start();
将其转换为 AsyncTask 的正确方法是什么?
我是否仍在使用 doInBackground 中的新线程来轮询服务器,还是有正确的方法来执行此操作?
2) 是否有具体的 UI 列表可以放入 onPostExecute 或任何概念列表?
在我的情况下,我猜需要将 putNewOnlineUserOnTheMap() 放在 onPostExecute 中。
谢谢。