Ich habe Opengles studiert und ein Beispiel dafür war die Verwendung einer "Pool" -Klasse, um Tastatureingaben und Tastaturereignisse zu verfolgen.
Könnte jemand bitte erklären, wie und warum eine Poolklasse benötigt wird. Was ich gelesen habe, hat etwas mit Garbage Collection und der Begrenzung der Anzahl der Eingabeklassen zu tun, die erstellt werden.
Dies alles scheint mir ein wenig abstrakt zu sein. Wenn also jemand erklären könnte, was vor sich geht, würde ich es begrüßen, wenn ich hier Code einfügen würde:
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);
Vielen Dank!
quelle