recherche

Maison  >  Questions et réponses  >  le corps du texte

Les opérations chronophages sous Android impliquent également le fonctionnement de l'interface utilisateur, comment les gérer ?

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));
}

//Tout d'abord, obtenez un nombre relativement grand de points de latitude et de longitude grâce aux requêtes réseau, puis je tracerai des lignes en fonction des points sur la carte. Le principal problème maintenant est que le processus de dessin au trait prendra plus de temps et que la page restera bloquée (ce qui n'est pas bon). Parce que la quantité de données sera plus grande, mais la ligne tracée par le sous-thread clé ne pourra pas être tracée et le thread de l'interface utilisateur restera à nouveau bloqué. Au secours....

ps : j'ai essayé d'utiliser runonuithread dans le thread enfant pour faire fonctionner l'addPolyLine du milieu, mais cela n'a pas fonctionné non plus.

这个方法在请求完数据后就直接执行了。
習慣沉默習慣沉默2767 Il y a quelques jours835

répondre à tous(1)je répondrai

  • 某草草

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

    Dessinez d'abord sur le sous-thread, puis actualisez l'interface sur le thread principal via le gestionnaire.
    Si vous souhaitez utiliser rxjava, ce sera très pratique

    répondre
    0
  • Annulerrépondre