Android - обновление TextView вызывает отставание от Bluetooth [дубликат]

Из образцов API Карт Google :

function initialize() {
  var myOptions = {
    zoom: 10,
    center: new google.maps.LatLng(-33.9, 151.2),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

  setMarkers(map, beaches);
}

/**
 * Data for the markers consisting of a name, a LatLng and a zIndex for
 * the order in which these markers should display on top of each
 * other.
 */
var beaches = [
  ['Bondi Beach', -33.890542, 151.274856, 4],
  ['Coogee Beach', -33.923036, 151.259052, 5],
  ['Cronulla Beach', -34.028249, 151.157507, 3],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
  ['Maroubra Beach', -33.950198, 151.259302, 1]
];

function setMarkers(map, locations) {
  // Add markers to the map

  // Marker sizes are expressed as a Size of X,Y
  // where the origin of the image (0,0) is located
  // in the top left of the image.

  // Origins, anchor positions and coordinates of the marker
  // increase in the X direction to the right and in
  // the Y direction down.
  var image = new google.maps.MarkerImage('images/beachflag.png',
      // This marker is 20 pixels wide by 32 pixels tall.
      new google.maps.Size(20, 32),
      // The origin for this image is 0,0.
      new google.maps.Point(0,0),
      // The anchor for this image is the base of the flagpole at 0,32.
      new google.maps.Point(0, 32));
  var shadow = new google.maps.MarkerImage('images/beachflag_shadow.png',
      // The shadow image is larger in the horizontal dimension
      // while the position and offset are the same as for the main image.
      new google.maps.Size(37, 32),
      new google.maps.Point(0,0),
      new google.maps.Point(0, 32));
      // Shapes define the clickable region of the icon.
      // The type defines an HTML <area> element 'poly' which
      // traces out a polygon as a series of X,Y points. The final
      // coordinate closes the poly by connecting to the first
      // coordinate.
  var shape = {
      coord: [1, 1, 1, 20, 18, 20, 18 , 1],
      type: 'poly'
  };
  for (var i = 0; i < locations.length; i++) {
    var beach = locations[i];
    var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        shadow: shadow,
        icon: image,
        shape: shape,
        title: beach[0],
        zIndex: beach[3]
    });
  }
}

25
задан phlebas 29 May 2012 в 20:09
поделиться

4 ответа

Я заметил это сам некоторое время назад, я думаю, проблема заключается в том, что каждый раз, когда вы вызываете setText, размер текстового поля может меняться, что требует, чтобы весь экран проходил через ретранслятор (дорогой).

Я еще не пробовал это сам, но если ваш текстовый файл прост и может быть сделан относительно фиксированным размером, возможно, попробуйте подклассировать TextView и создать представление, которое не изменяет размер на setText, а просто рисует все, что угодно может в существующую область? Это сэкономит много времени.

Возможно, это уже флаг setText, который может заставить его сделать это, но я не знаю об этом, хотя я не искал его.

18
ответ дан Tim 23 August 2018 в 22:15
поделиться

некоторые возможные улучшения:

  1. попробуйте использовать обработчик, который обновляет текстовое окно каждые 0,5 секунды вместо потока, который это делает.
  2. делает runnable конечным постоянным объектом вместо того, чтобы прокричать новую каждую секунду.
  3. считают, что время изменилось (newTimeInMs-LastPublishedTimeInMs> = 1000), прежде чем сообщать текстовому редактору обновить себя.
  4. вместо String. формате, попробуйте использовать StringBuilder. однако вам не понравится решение локали, которое предоставляет String.format (например, для арабских цифр).
1
ответ дан android developer 23 August 2018 в 22:15
поделиться

В моем случае я обновляю TextView из сенсорного события, что вызывает много обновлений. Решение заключалось в изменении TextView layout_width & amp; layout_height до фиксированного размера.

2
ответ дан shmulik.r 23 August 2018 в 22:15
поделиться

В моем случае это было свойство TextView:

android:ellipsize="marquee"

Удаление ускоренного установки текста.

0
ответ дан vinga 23 August 2018 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: