目標:
Google App EngineサーバーとAndroidクライアントを使用して、AndroidクライアントのユーザーオーバーレイでGoogleマップを配置しようとしています。30秒ごとにサーバーをポーリングし、ユーザーを含むVectorを取得して、マップに追加しています。
現在のステータス:
私は1つの新しいスレッドですべてを使用しているので、アプリを実行した後、
奇妙な動作(遅延オーバーレイ、複数のオーバーレイ)が発生し、その後はでクラッシュしましConcurrentModificationException
た。
少し読んだ後、 AsyncTaskを使用する必要があることがわかりました。
間違っている場合は訂正してください。ただし、onCreateのアクティビティで行われるすべてが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)onPostExecuteに配置するUIとしてカウントされるものの特定のリスト、または概念リストはありますか?
私の場合、putNewOnlineUserOnTheMap()をonPostExecuteに配置する必要があると思います。
ありがとう。