Tôi đã nghiên cứu opengl es và một ví dụ tôi thấy là sử dụng lớp "Pool" để theo dõi các sự kiện bàn phím và cảm ứng.
Ai đó có thể vui lòng giải thích làm thế nào và tại sao một lớp pool là cần thiết. Từ những gì tôi đã đọc, nó có liên quan đến việc thu gom rác và giới hạn số lượng các lớp đầu vào được tạo ra.
Tất cả điều này có vẻ hơi trừu tượng đối với tôi, vì vậy nếu ai đó có thể vui lòng giải thích những gì đang xảy ra, tôi sẽ đánh giá cao nó, tôi sẽ dán một số mã ở đây:
public Pool(PoolObjectFactory < T > factory, int maxSize) {
this.factory = factory;
this.maxSize = maxSize;
this.freeObjects = new ArrayList < T > (maxSize);
}
public T newObject() {
T object = null ;
if (freeObjects.isEmpty())
object = factory.createObject();
else
object = freeObjects.remove(freeObjects.size() - 1);
return object;
}
public void free(T object) {
if (freeObjects.size() < maxSize)
freeObjects.add(object);
}
PoolObjectFactory <TouchEvent> factory = new PoolObjectFactory <TouchEvent> () {
@Override
public TouchEvent createObject() {
return new TouchEvent();
}
Pool <TouchEvent> touchEventPool = new Pool <TouchEvent> (factory, 50);
TouchEvent touchEvent = touchEventPool.newObject();
. . . do something here . . .
touchEventPool.free(touchEvent);
Cảm ơn!