java - 类之间丢失数据

标签 java android

我有基本的下载器类 我也在那里下载和解码位图。 但如果我尝试从此类中解码,我会得到我的位图= null。

public void add_item(String _txt, String _url) {
    try {
        Downloader dw = new Downloader(_url, context);
        InputStream s = dw.execute().get();
        Bitmap b = BitmapFactory.decodeStream(s); // <<<<<< bitmap is null
        bmp.add(b);
    }  catch (ExecutionException e) { Toast.makeText(this.context, "Ошибка загрузки картинки", Toast.LENGTH_SHORT).show(); }
       catch (InterruptedException e) { Toast.makeText(this.context, "Ошибка загрузки картинки", Toast.LENGTH_SHORT).show(); }
}

下载器.java

package com.example.john.weather;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Downloader extends AsyncTask<Void, Void, InputStream> {

String url;
Context mContext;

public Downloader(String _url, Context _context){
    this.url = _url;
    this.mContext = _context;
}

@Override
protected InputStream doInBackground(Void... params) {
    InputStream s;
    try{
        s = download(this.url);
        //Bitmap b = BitmapFactory.decodeStream(s); // <<<<<< Bitmap is good
        return s;
    }
    catch (MalformedURLException e) {
        Toast.makeText(mContext, "Ошибка загрузки "+url, Toast.LENGTH_SHORT).show();
        return null; }
    catch (IOException e){
        Toast.makeText(mContext, "Ошибка загрузки "+url, Toast.LENGTH_SHORT).show();
        return null;
    }
}

private InputStream download(String url) throws IOException {
    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    connection.connect();
    InputStream input = connection.getInputStream();

    return input;
}

}

我有基本的下载器类 我也在那里下载和解码位图。 但如果我尝试从此类中解码,我会得到我的位图= null。

最佳答案

问题很可能出在 download() 方法中的 Downloader 类中。您需要先加载流的内容,然后再将执行转移到另一个线程(在本例中是主线程)

关于java - 类之间丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583596/

相关文章:

java - 在不同的线程中发出 Volley 请求

Android ArrayAdapter过滤问题

android - 使用我的应用程序中嵌入的 NanoHttpd 服务器查看 Assets 文件夹中的 index.html

java - 如何强制子类在具有主体的父类(super class)中实现方法

java - NPC类应该有自己的移动功能,还是移动功能属于游戏类?

java - onSuccess/onFailure 可以替代 vert.x 中 CompositeFuture 的 setHandler 吗?

java - 字符串非法转义字符

java - ServiceBus JAVA SDK高级重新加载错误,ServiceLoader(不是子类型)

java - Android - 线程未执行

android - 寻找一个快速简单的等待命令