Zu zeitaufwändigen Vorgängen in Android gehört auch die Bedienung der Benutzeroberfläche. Wie geht man damit um?
習慣沉默
習慣沉默 2017-05-24 11:38:10
0
1
812

private void addPolylineInPlayGround() {

    List<Integer> colorList = new ArrayList<Integer>();
    List<BitmapDescriptor> bitmapDescriptors = new ArrayList<BitmapDescriptor>();
    int[] colors = new int[]{Color.argb(255, 0, 255, 0), Color.argb(255, 255, 255, 0), Color.argb(255, 255, 0, 0)};

    //用一个数组来存放纹理
    List<BitmapDescriptor> textureList = new ArrayList<BitmapDescriptor>();
    textureList.add(BitmapDescriptorFactory.fromResource(R.drawable.custtexture));

    List<Integer> texIndexList = new ArrayList<Integer>();
    texIndexList.add(0);//对应上面的第0个纹理
    texIndexList.add(1);
    texIndexList.add(2);

    Random random = new Random();
    for (int i = 0; i < latLngs.size(); i++) {
        colorList.add(colors[random.nextInt(3)]);
        bitmapDescriptors.add(textureList.get(0));
    }
    mPolyline = mAMap.addPolyline(new PolylineOptions().setCustomTexture(BitmapDescriptorFactory.fromResource(R.drawable.custtexture)) //setCustomTextureList(bitmapDescriptors)
            .setCustomTextureIndex(texIndexList)
            .addAll(latLngs)
            .useGradient(true)
            .width(18));
    dismissLoading();
    LatLngBounds bounds = new LatLngBounds(latLngs.get(0), latLngs.get(latLngs.size() - 2));
    mAMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 200));
}

//Erhalten Sie zunächst eine relativ große Anzahl von Breiten- und Längengradpunkten durch Netzwerkanforderungen, und dann zeichne ich Linien basierend auf den Punkten auf der Karte. Das Hauptproblem besteht nun darin, dass der Strichzeichnungsprozess zeitaufwändiger wird und die Seite hängen bleibt (was nicht gut ist). Da die Datenmenge größer wird, kann die vom Schlüsselunterthread gezeichnete Linie jedoch nicht gezeichnet werden, und der UI-Thread bleibt erneut hängen. Hilfe....

ps: Ich habe versucht, runonuithread im untergeordneten Thread zu verwenden, um die mittlere addPolyLine zu bedienen, aber es hat auch nicht funktioniert.

这个方法在请求完数据后就直接执行了。
習慣沉默
習慣沉默

Antworte allen(1)
某草草

先在子线程画,然后通过handler在主线程刷新界面。
你要用rxjava的话实现就很方便了

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage