Jag håller på med en Musikspelare och även fast jag är noob så går det faktiskt framåt 
Men jag har lite problem, vissa saker jag gör blir inte bra och långsamma så jag hoppas ni vill hjälpa till och lösa lite av mina problem.
Jag vill ju såklart visa albumbilderna bredvid låtar och album samt artistbilder bredvid artister. Eftersom jag visar de i en listview (vad annars?) så har jag gjort en egen adapter som bara override:ar getView.
När jag visar bilden gör jag:
Kod:
ImageView AlbumArt = (ImageView) v.findViewById(R.id.image);
AlbumArt.setImageBitmap(art.getAlbum(AlbumID));
Art är en class jag gjort för att hantera allt som har med bilderna att göra. getAlbum ser ut såhär:
Kod:
public Bitmap getAlbum(long ID) {
String coverPath = null;
Bitmap bm = null;
File tmp = new File (path + "r" + ID);
if (tmp.isFile()) {
coverPath = path + "r" + ID;
}
if (coverPath != null) {
bm = BitmapFactory.decodeFile(coverPath);
}
return bm;
}
Detta fungerar men att scrolla i listan laggar lite smått och Logcat spammar ut meddelanden om att Garbage Collector har rensat.
Jag misstänker att detta beror på att jag laddar in varje bild som en egen bild. Om en artist har två skivor och jag kollar på artistens alla låtar är det ju egentligen bara två gånger jag behöver ladda in en ny bild, men nu antar jag att jag laddar in en ny bild 20 gånger (om det är tio låtar på varje skiva). Rätt?
Hur löser jag detta?
Jag har funderat på en Array eller Arraylist som jag sparar in bilderna i och om jag vill visa samma bild igen plockar jag den barra från Arrayen. Men då är frågan, hjälper det? Är det kanske i själva visningen som det blir dumt? kommer det ligga en tung Array i minnet med en massa bilder som inte är intressanta längre?
En annan grej. Själva uppspelningen ligger ju i en Service i en separat tråd. I de Activity:na som jag behöver kommunicera med Service:n måste jag ju skapa en anslutning, detta tar lite tid (under en sekund men det pajjar flytet ändå eftersom jag inte kan rita upp något undertiden). Det känns rätt dumt att behöva upprätta en ny anslutning i varje Activity, borde jag inte på nått sätt kunna spara undan den och återanvända den i hela programmet?