1. Java / Говнокод #11626

    +75

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    @Override
    public boolean onTouchEvent(MotionEvent e) {
    	x=(int)e.getX(); y=(int)e.getY();
    	/* ... */
    	synchronized(this) {
    		try {this.wait(1000);}
    		catch (InterruptedException ex) {}
    	}
    	return true;
    }
    
    /* Gets (screen/pixel) x,y coordinates of last touch event*/
    public boolean GetCoordinates(MutablePoint coordinates) {
    	if (x==-1) return false;
    	coordinates.init(x,y);
    	return true;
    }

    https://github.com/acl33/AndroidDasher/blob/master/src/dasher/android/DasherCanvas.java

    Запостил: rat4, 20 Августа 2012

    Комментарии (8) RSS

    • Какая прелесть! wait(1000) в synchronized...
      Ответить
      • 1 fps хватит каждому!
        Ответить
      • конечно, wait не может быть не в synchronized.
        и да, wait это не sleep, обратите внимание.
        Ответить
        • Ой. Вот это я пролетел, спутал wait() и sleep()...
          //tell the UI thread we're now ready for another touch event....
          synchronized(this) {this.notify();
          Вот такой там код есть в renderFrame. Видимо UI тред висит до тех пор, пока не отрендерится хотя бы один кадр... Т.е. все-таки не 1FPS.
          Ответить
    • Распространенная ошибка у начинающих кодеров под Андроид - вставлять ожидание или какие-то тяжелые вычисления в UI-тред.
      Ответить
    • public boolean GetCoordinates(MutablePoint coordinates)

      Зачем? Зачем вообще MutablePoint? И почему GetCoordinates, а не getCoordinates? Почему бы не

      public ImmutablePoint getCoordinates() {
      	return x == -1 ? null : new ImmutablePoint(x, y);
      }
      Ответить
    • >boolean GetCoordinates()
      ага, спасибо что дал координаты
      Ответить

    Добавить комментарий