簡體   English   中英

圖像不出現

[英]Images don't appear

我試圖使用異步任務解碼從互聯網下載的圖像。 問題在於圖像有時加載而有時不加載。 URL上的圖像始終存在。

這是我的asycn任務:

private class JSONIconWeatherTask extends AsyncTask<String, Void, byte[]> {

    @Override
    protected byte[] doInBackground(String... params) {

        byte[] data = null;

        try {
            // Let's retrieve the icon
            data = ( (new WeatherHttpClient()).getImage(params[0]));

        } catch (Exception e) {             
            e.printStackTrace();
        }

        return data;
}

@Override
    protected void onPostExecute(byte[] data) {         
        super.onPostExecute(data);

        if (data != null) {
            Bitmap img = BitmapFactory.decodeByteArray(data, 0, data.length);
            iconWeather.setImageBitmap(img);
        }
    }

}

這是我的日志:

09-29 15:53:14.590:W / System.err(14373):java.net.ConnectException:無法連接到/127.0.0.1(端口81):連接失敗:ECONNREFUSED(連接被拒絕)09-29 15: 53:14.590:W / System.err(14373):在libcore.io.IoBridge.connect(IoBridge.java:114)09-29 15:53:14.590:W / System.err(14373):在java.net .PlainSocketImpl.connect(PlainSocketImpl.java:192)09-29 15:53:14.590:W / System.err(14373):at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)09-29 15:53 :14.590:W / System.err(14373):在java.net.Socket.connect(Socket.java:842)09-29 15:53:14.590:W / System.err(14373):在libcore.net http.HttpConnection。(HttpConnection.java:76)09-29 15:53:14.590:W / System.err(14373):位於libcore.net.http.HttpConnection。(HttpConnection.java:50)09-29 15: 53:14.590:W / System.err(14373):位於libcore.net.http.HttpConnection $ Address.connect(HttpConnection.java:340)09-29 15:53:14.590:W / System.err(14373):在libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)09-29 15:53:14.590:W / Syst em.err(14373):位於libcore.net.http.HttpConnection.connect(HttpConnection.java:128)09-29 15:53:14.590:W / System.err(14373):位於libcore.net.http.HttpEngine .openSocketConnection(HttpEngine.java:316)09-29 15:53:14.590:W / System.err(14373):位於libcore.net.http.HttpEngine.connect(HttpEngine.java:311)09-29 15:53 :14.590:W / System.err(14373):在libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)09-29 15:53:14.590:W / System.err(14373):在libcore net.http.HttpEngine.sendRequest(HttpEngine.java:240)09-29 15:53:14.590:W / System.err(14373):位於libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)09 -29 15:53:14.590:W / System.err(14373):位於libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)09-29 15:53:14.590:W / System.err(14373 ):at com.example.weatherforecast.WeatherHttpClient.getImage(WeatherHttpClient.java:116)09-29 15:53:14.590:W / System.err(14373):at com.example.weatherforecast.MainActivity $ JSONForecastWeath erTask.doInBackground(MainActivity.java:187)09-29 15:53:14.590:W / System.err(14373):at com.example.weatherforecast.MainActivity $ JSONForecastWeatherTask.doInBackground(MainActivity.java:1)09-29 15:53:14.590:W / System.err(14373):at android.os.AsyncTask $ 2.call(AsyncTask.java:287)09-29 15:53:14.590:W / System.err(14373):at java.util.concurrent.FutureTask.run(FutureTask.java:234)09-29 15:53:14.590:W / System.err(14373):at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java: 230)09-29 15:53:14.590:W / System.err(14373):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)09-29 15:53:14.600:W /系統。 err(14373):在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:573)09-29 15:53:14.600:W / System.err(14373):在java.lang.Thread.run (Thread.java:856)09-29 15:53:14.600:W / System.err(14373):原因:libcore.io.ErrnoException:連接失敗:ECONNREFUSED(連接被拒絕)09-29 15:53:14.600 :W / System.err(14373):位於libcore io.Posix.connect(本機方法)09-29 15:53:14.600:W / System.err(14373):在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)09-29 15:53:14.600 :W / System.err(14373):在libcore.io.IoBridge.connectErrno(IoBridge.java:127)09-29 15:53:14.600:W / System.err(14373):在libcore.io.IoBridge。 connect(IoBridge.java:112)

“拒絕連接”表示您嘗試連接的服務器(在此為localhost)在嘗試連接的端口上沒有任何監聽(在此為81)。

名稱localhost是指代碼在其上運行的設備,即android設備或模擬器。 除非您也正在運行在同一設備上的端口81上接受連接的應用程序,否則您將連接到錯誤的地址。

如果在開發計算機上運行服務器,並嘗試從仿真器連接到服務器,則應使用10.0.2.2而不是localhost。 了解為什么我們使用10.0.2.2連接到本地Web服務器,而不是在android客戶端中使用計算機ip地址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM