suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Zu zeitaufwändigen Vorgängen in Android gehört auch die Bedienung der Benutzeroberfläche. Wie geht man damit um?

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.

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

Antworte allen(1)Ich werde antworten

  • 某草草

    某草草2017-05-24 11:40:10

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

    Antwort
    0
  • StornierenAntwort