Ich bin neu in Android, ich versuche eine Karte aus Polygonen sauber zu machen, die nicht auf einer gesehen werden. Ich habe beschlossen, es in Thread zu tun. Aber wenn ich versuche, enthält anrufen Methode es eine Ausnahme wirft „java.lang.IllegalStateException: Nicht auf dem Haupt-Thread“Google map latLngBounds
Thread mThread = new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
if (mPolygones == null || mPolygones.isEmpty())
continue;
synchronized (mPolygones) {
for (int i = 0; i < mPolygones.size(); i++) {
Polygon polygon = mPolygones.get(i);
if (mLatLngBounds.contains(polygon.getPoints().get(0))) {
Intent intent = new Intent("polygon");
intent.putExtra("index", i);
mLocalBroadcastManager.sendBroadcast(intent);
}
}
}
}
} catch (Exception ex) {
ex.getMessage();
}
}
});
ich mLatLngBounds von google map in OnCameraMoveListener Rückruf. Gibt es eine Möglichkeit, dies zu tun? Ich werde für alle Beratung geschätzt werden
zu bekommen Ich werde versuchen, meine Aufgabe zu beschreiben. Ich erhalte die Koordinaten von out GPS-Modul. Frequenz von 2 bis 10 Hz. Ich muss diese Koordinate verarbeiten und mit SphericalUtils.computeOffset() zu zwei weiteren parallelen Koordinaten kommen. Wenn ich das nächste bekomme, mache ich dasselbe. Und dann muss ich Polygon durch verarbeitete Koordinaten hinzufügen. Es stellt sich heraus, viel Polygone und Karten stecken. Meine Entscheidung ist visobility falsch für jedes Polygon gesetzt, das vom Sichtbaren von einer Karte geht. Der Dienst gibt Aktivitätsdaten und ein anderer Thread sollte Polygone unsichtbar machen. I – DanMan
Im Falle meiner Frage war truble in polygone.getPoints(). Ich kann das nicht von einem externen UI-Thread aus tun – DanMan