Ho studiato le opzioni e un esempio che ho visto è stato l'utilizzo di una classe "Pool" per tenere traccia degli eventi tattili e della tastiera.
Qualcuno potrebbe spiegare come e perché è necessaria una classe di pool. Da quello che stavo leggendo aveva qualcosa a che fare con la garbage collection e la limitazione del numero di classi di input che sono state create.
Tutto questo mi sembra un po 'astratto, quindi se qualcuno potesse spiegare cosa sta succedendo, lo apprezzerei, incollerei un po' di codice qui:
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);
Grazie!