マップ上に10kポリゴンをロードするマップベースのアプリケーションを作成しています。唯一の問題は、マップにポリゴンを追加する唯一の方法はUIスレッドにあることです。つまり、追加すると5〜10秒間フリーズするか、クラッシュします。重いプロセスでクラッシュするのを防ぐ
私はロードするのに時間がかかることを受け入れる準備はできていますが、システムがクラッシュや凍結を防ぐために苦労しているときにforループを遅くする方法がありますか?私が考えている方法の1つは、forループに短い遅延を置くことですが、それは安全な側にする必要があるため、ずっと長い時間を要しますので、理想的ではありません。
protected void onPostExecute(HashMap<String, ArrayList> result){
for(String key : result.keySet()){
List<PolygonOptions> thisList = result.get(key);
for(PolygonOptions poly: thisList){
Polygon thisPoly = mMap.addPolygon(poly);
}
}
}
あなたのコードを投稿してください。 –
私は問題が「地図上に10kポリゴン以上」を読み込もうとしていると思います。ユーザーはマップ上で10Kポリゴンを一度に知覚することはできません。これは、地図上に10Kのマーカーを一度に配置しようとするのと同じことです。そのために、マーカーのクラスタリングを使用して、情報の過負荷を軽減し、パフォーマンスを向上させます。 – CommonsWare
@CommonsWare私はスクリーンから離れたときにそれらを隠しとして設定する方法を実装しましたが、それらを追加してマップから削除するのはずっと難しく、表示するのではなくシステムを追加/削除する方が効果的です/隠す。 –