2014-03-27 61 views
1

我正在嘗試從互聯網圖像,發現類似的樣品然後稍微改變了代碼,我已經找到。但是,當我運行我的代碼,我得到了。這時我已經尋找解決方案,並注意到這個異常android.os.NetworkOnMainThreadException我應該使用Asyntask類來做到這一點。問題很簡單我只是不能在每行代碼中都得到語法錯誤。請你幫忙解決這個代碼並使其正常運行。提前感謝混淆Asyntask在檢索圖像

class BackroundActivity extends AsyncTask<Void, Bitmap, Void> 
{ 

    @Override 
    protected Bitmap doInBackground(String src) throws IOException { 
     HttpURLConnection con = null; 

      URL url=new URL(src); 
      con=(HttpURLConnection) url.openConnection(); 
      con.setDoInput(true); 
      InputStream input=con.getInputStream(); 
      Bitmap bmp=BitmapFactory.decodeStream(input); 
      return bmp; 

    } 

回答

0

AsyncTask正在使用varargs並且您也未正確指定返回類型,因此正確的代碼如下所示:

class BackroundActivity extends AsyncTask<String, Void, Bitmap> 
{ 

    @Override 
    protected Bitmap doInBackground(String... src) throws IOException { 
     HttpURLConnection con = null; 

     URL url=new URL(src[0]); 
     con=(HttpURLConnection) url.openConnection(); 
     InputStream input=con.getInputStream(); 
     Bitmap bmp = BitmapFactory.decodeStream(input); 
     return bmp; 

    } 
} 

docs

由異步任務中使用的三種類型的有以下幾種:

  1. PARAMS,在執行時發送給任務的參數的類型。
  2. 進度,後臺計算期間發佈的進度單位的類型。
  3. 結果,後臺計算結果的類型。