我目前正在嘗試啓動一個線程,它從資源中提取drawable並在設定的時間後發佈它。然後從資源中提取下一個drawable,並且完成相同的事情。如何迭代大量具有相似名稱的資源?
final ImageView zImageView = (ImageView) findViewById(R.id.zzz_animation_view);
new Thread(new Runnable() {
public void run() {
for(int i = 1; i<=510; i++)
{
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.z_animation0001); // how do I increment this recourse to z_animation0002, 0003, ..., 0510 ?
zImageView.postDelayed(new Runnable() {
public void run() {
zImageView.setImageBitmap(bitmap);
}
},200);
}
}
}).start();
首先,這是解決問題的正確方法嗎? drawable對於我來說太大了,無法使用animation-list,因此我的目標是一次加載一個圖像,以確保我擁有足夠的內存。其次,我如何解決迭代我的資源的問題?
但是,'Resources.getIdentifier'真的很慢,因爲它使用了沉重的反射(我認爲)。當使用很多drawable時,我強烈建議不要使用它。 – Thrakbad
謝謝。太棒了。其中一個問題是:這是如何內存密集?執行此任務時是否需要清理堆? – CodePrimate
@Thrakbad剛剛檢查了'getIdentifier'的實現。它不使用反射,並在本機代碼中實現,所以我認爲你不應該擔心它的性能。無論如何,大部分執行時間將被'BitmapFactory.decodeResource'消耗,實際上getIdentifier如何實現並不重要。 –