Я обнаружил исключение "Недостаточно памяти". Чем я пытался использовать recycle как в коде. Теперь я сталкиваюсь с попыткой использовать переработанное исключение растрового изображения. Как правильно утилизировать? Это должно только переключаться между изображениями в потоке.
Спасибо.
public class AVMSystemActivity extends Activity implements Runnable{
/** Called when the activity is first created. */
Field[] drawables;
ImageView imageView;
boolean adFlip=true;
Resources a;
boolean first=true;
int k=0x7f020000;
int last;
private RefreshHandler mRedrawHandler = new RefreshHandler();
int adCount=0;
RelativeLayout ll;
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
AVMSystemActivity.this.updateAd();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
drawables = avm.system.R.drawable.class.getFields();
//---------------------------------------------------
//---------------------------------------------------
//---------------------------------------------------
File dir = new File("assets/drawable");
String[] children = dir.list();
a=this.getResources();
int i=0x7f020000;
boolean done=true;
ll = (RelativeLayout) findViewById(R.id.rlout);
imageView = new ImageView(this);
ll.addView(imageView);
try
{
for (i=0x7f020000;i<0x7f020040;i++)
{
String name=a.getResourceName(i);
name=name.substring(name.indexOf(':')+1);
name=name.substring(9);
if(name.startsWith("ad"))
{
Log.i("res tara",name);
//imageView.setImageDrawable(a.getDrawable(i));//------
//imageView.setBackgroundDrawable(a.getDrawable(i));
adCount++;
}
else
{
last=i;
Log.i("LAST ELSE",i+"");
break;
}
}
}
catch(Exception e)
{
last=i;
Log.i("LAST",i+"");
done=false;
e.printStackTrace();
}
Button btn=(Button)findViewById(R.id.restbutton);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.i("ACTION","BUTTON CLICKED");
adFlip=!adFlip;
try
{
Intent i = new Intent(AVMSystemActivity.this,RestListActivity.class);
startActivity(i);
}
catch(Exception e)
{
Log.i("cort",e.toString());
}
}
});
updateAd();
}
int currentInt=0;
private void updateAd(){
Log.i("update","lan");
try
{
if(adFlip)
{
mRedrawHandler.sleep(1000);
//*******
if(k==last)
k=0x7f020000;
else
{
if(a.getResourceName(k).contains("icon"))
{
Log.i("update",a.getResourceName(k));
}
else
{
Log.i("update",a.getResourceName(k)+"__--");
//imageView.setBackgroundDrawable(a.getDrawable(k));
if(!first)
{
imageView.buildDrawingCache();
Log.i("update",a.getResourceName(k)+"//////");
((BitmapDrawable) imageView.getDrawable()).getBitmap().recycle();
Log.i("update",a.getResourceName(k)+"******");
}
else
{
first=false;
Log.i("update","------------");
}
imageView=new ImageView(this);
Log.i("update",a.getResourceName(k)+"++++++");
//imageView.getDrawable().getBitmap().recycle();
imageView.setImageDrawable(a.getDrawable(k));
imageView.setPadding(20, 0, 0, 0);
ll.addView(imageView);
}
k++;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}