2016-07-19 51 views
0

我已經嘗試了很多不同的方式來下載圖像,並沒有一個實際上工作,我設法得到的東西工作,但它不完美。 我做了一個新的線程來下載位圖,我沒有將它們存儲在系統存儲器中,或將它們緩存在內存中供以後使用。如果我反覆打開這個活動,這個應用程序的內存使用率會越來越高,我根本不需要這些!Android,如何有效地下載兩個圖像

   URL url = new URL("http://10.0.0.21:80/1.png"); 
       bitmapOne = BitmapFactory.decodeStream(url.openStream()); 

       URL url2 = new URL("http://10.0.0.21:80/2.png"); 
       bitmapTwo = BitmapFactory.decodeStream(url2.openStream()); 

       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         image.setImageBitmap(bitmapOne); 
         image2.setImageBitmap(bitmapTwo); 
        }}); 

謝謝大家的回答!但... 我只想使用純java和沒有第三方庫加載圖像,我正在尋找一種方法來減少內存使用量,而不是尋找另一種方式來下載它們。我也不知道有兩個網址和加載每個流看起來非常專業,因爲客戶端可以在任何特定時刻斷開(讓我們假裝它),它不會加載它們這是極其需要

+0

你所做的幾乎是使用純Android下載圖像的唯一方式。除非你想開始使用其他第三方庫。但這取決於你在做什麼。如果只是你製作並製作它,那麼它應該與第三方合適。如果不在使用前與老闆覈實。祝您好運 – MNM

+1

[如何在Android中下載和保存圖像]可能的重複(http://stackoverflow.com/questions/15549421/how-to-download-and-save-an-image-in-android) – mbmc

+1

@MNM我編輯了這篇文章,請回來看看,謝謝你的評論!真的幫了我很多 –

回答

1

使用畢加索庫,一切都將變得輕而易舉:

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

Picasso.with(this) 
     .load("http://SomeUrl/CodeFeature.jpg") 
     .into(imageView); 

一個很好的教程可以發現here

0

https://github.com/zetbaitsu/Compressor

用法: compressedImageBitmap = Compressor.getDefault(本).compressToBitmap(actualImageFile);

此圖片可能對您有所幫助。

您可以訪問GitHub。搜索「Android」,排序方式:"Most Stars" ,很多很棒的圖書館,你會發現。

0

排球也可以是一個很好的選擇,具有顯示動畫gif的能力。這個片段說明的基本使用,這裏與圖像緩存,東西,可以讓你的應用程序不被存儲和網絡的要求太苛刻:

ImageLoader.ImageCache imageCache = new BitmapLruCache(); 
    ImageLoader imageLoader = new ImageLoader(Volley.newRequestQueue(getApplicationContext()), imageCache); 
    NetworkImageView myImage = (NetworkImageView) findViewById(R.id.myImageView); 
    myImage.setImageUrl(""+mSpeaker.getHeadshotUrl(), imageLoader); 
    loadBitmap("http://yourdomain.com/yourImage.jpg", myImage); 

對於這個工作你需要的是凌空庫和BitmapLruCache.java