Uso animazioni in molte attività della mia app. Questo è il codice per inicializate loro:Memoria libera da AnimationDrawable
public void prepareVideo (int resourceBall, String animation, int width, int height){
imgBall = (ImageView)findViewById(resourceBall);
imgBall.setVisibility(ImageView.VISIBLE);
String resourceNameAnimation = animation;
int id_res = getResources().getIdentifier(resourceNameAnimation, "drawable", getPackageName());
imgBall.setBackgroundResource(id_res);
LayoutParams latoutFrame = imgBall.getLayoutParams();
latoutFrame.width = width;
latoutFrame.height = height;
imgBall.setLayoutParams(latoutFrame);
frame = (AnimationDrawable) imgBall.getBackground();
}
Poi chiamo: imgBall.post (nuova StartAnimation());
che chiamare un eseguibile:
class StartAnimation implements Runnable {
public void run() {
frame.start();
}
}
Il problema è che uso numerose animazioni che sono gli usi della stessa XML (frame per frame). Devo chiamare questo metodo in molte attività con la stessa animazione. Finalmente ottengo un outofmemoryerror. Sto cercando di liberare la memoria tra le schermate:
for (int i = 0; i < frame.getNumberOfFrames(); ++i){
Drawable frame_rescue = frame.getFrame(i);
if (frame_rescue instanceof BitmapDrawable) {
((BitmapDrawable)frame_rescue).getBitmap().recycle();
}
frame_rescue.setCallback(null);
Il problema è che quando cerco di usare di nuovo una resourde y ottenere altro errore: "Cercare di utilizzare bitmap riciclata"
qualcuno sa altro modo di memoria libera?