Diese Frage bindet sich in meine Frage here ist aber eine Frage für sich, so geht hier, Wie würde ich konvertieren ein Byte-Array aus dem UI-Thread zeichnen, und gibt es keine aus Leistungsperspektive zeigen? die im Weg, es einen Adapters ist als Teil versucht und die Fortschrittsbalken funktionieren, aber die Bilder laden nie und gibt mir einen Fehler in Android StudioWie konvertiert man Byte-Array zu zeichnen aus dem ui Thread
here, wie im Versuch, es zu tun (nie zuvor async Aufgabe verwendet ive)
private class MyAsyncTask extends AsyncTask<Bitmap, Void, Bitmap> {
private byte[] data;
private ProgressBar progress;
private MyViewHolder holder;
public MyAsyncTask(byte[] data,ProgressBar progress,MyViewHolder holder) {
this.data = data;
this.progress = progress;
this.holder = holder;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progress.setVisibility(View.VISIBLE);
progress.setIndeterminate(true);
}
@Override
protected Bitmap doInBackground(Bitmap... data) {
return BitmapFactory.decodeByteArray(this.data, 0, data.length);
}
@Override
protected void onPostExecute(Bitmap response) {
super.onPostExecute(response);
{
Drawable drawable = new BitmapDrawable(response);
holder.cardImage.setImageDrawable(drawable);
progress.setVisibility(View.GONE);
}
}
}
Dann diese Methode verwende ich es nennen:
public void startNewAsyncTask(byte[] image,ProgressBar progress,MyViewHolder holder) {
MyAsyncTask asyncTask = new MyAsyncTask(image,progress,holder);
asyncTask.execute();
}
ich dies wie folgt aus meinem viewholder nennen:
startNewAsyncTask(cardmaker.getCardIcon(),holder.progress,holder);
Das gibt mir diese Fehlermeldung:
D/skia: --- SkImageDecoder::Factory returned null
Was früher, bevor ich die Asynchron Aufgabe war ganz einfach versucht, zu arbeiten, dies;
Drawable drawable = new BitmapDrawable(Utility.getPhoto(cardmaker.getCardIcon()));
holder.cardImage.setImageDrawable(drawable);
und dass ‚Utility.getPhoto‘ sah aus wie dieses
public static Bitmap getPhoto(byte[] image) {
return BitmapFactory.decodeByteArray(image, 0, image.length);
}
Dies ist der Choreograph Frames überspringen und schließlich stürzt meine Anwendung mit einem OutOfMemoryError, die in mir wirksam der Punkt, um dies zu implementieren versucht ist, macht async Aufgabe, also wenn mein Verständnis grundlegend falsch ist, zögern Sie bitte nicht, mir zu sagen
vielen dank