また、頂点の読み込みと組み立てに時間がかかるため、バックグラウンドでマップ上に多くのポリゴンを描画したいと考えています。私にとってうまくいった解決策は、AsyncTask にデータをロードし、各ポリゴンのポイントを onProgressUpdate メソッドのメイン UI のメソッドに読み戻すときに渡すことでした。
private class AddZonesTask extends AsyncTask<Zone, Zone, Integer> {
  protected Integer doInBackground(Zone... zones) {
    for (Zone zone : zones) {
      Cursor cursor = provider.query( .... );
      List<Points> points = cursorToPointsMethod(cursor);
      zone.add(points);
      publishProgress(zone);
    }
  return zones.length;
  }
  protected void onProgressUpdate(Zone... zones) {
    drawBorder(zones[0]);
  }
  protected void onPostExecute(Integer result) { }
}
次に、メイン UI の drawBorder がそれらをマップ オブジェクトに追加します。