2014-02-25 41 views
0

我在「較慢」的手機(512MB內存)上出現內存不足錯誤。出現內存不足錯誤,一個活動中的圖像太多

我的應用程序在主要活動上有一些選項卡,在這些選項卡中它有一些鏈接到webview的圖像按鈕。 我認爲錯誤來自一次加載所有圖像,即使是在第一個標籤上看不到的圖像。我已經試過"android:largeHeap="true"",但它仍然崩潰。

任何人都可以幫助我讓我的應用程序不加載圖像,直到這些圖像被按下的標籤?將可見性更改爲INVISIBLE or GONE也無濟於事。

編輯:

我加載我的圖片,按鈕:

XML:

<Button 
    android:id="@+id/jn" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_marginTop="3dp" 
    android:background="@drawable/b_jn" /> 

JAVA:

Button bjn = (Button) findViewById(R.id.jn); 

    bjn.setOnClickListener(new View.OnClickListener() { 

@Override 
    public void onClick(View v) { 
// TODO Auto-generated method stub 
startActivity(new Intent("applandia.quiosquedigitalfree.JN")); 

     } 
    }); 

現在我有其中約50在排在同一活動中。我不是專家編碼器。

+0

你如何加載你的圖片?請編輯您的問題以包含該代碼和實際堆棧跟蹤。 – thegrinner

+0

請考慮添加一些代碼,清楚地顯示您的問題。其實我們至少沒有足夠的信息來幫助你。 – ztirom

回答

-1

好吧,有很多方法可以解決這個問題,對於我來說它是最好的解決方案,它使用「緩存圖像加載器」,這是由Sergey Tarasevich創建的庫,非常有用。

https://github.com/nostra13/Android-Universal-Image-Loader

如果您希望繼續工作像你現在這樣,一個簡單而醜陋的解決方案是呼籲:爲了指示系統要

的System.gc()做一個垃圾收集(這將清理一些內存)。

0

可以獲取縮放位圖或嘗試其他選項,如inSampleSize,檢查您的解決方案如何影響圖像質量。

ESP爲「..loading一次所有的圖像,即使是沒有見過的第一個選項卡上的那些。」(我也做了一個類似的實現以下):
可以使用inSampleSize加載所有圖像並用原始圖像替換可見標籤圖像 - 對於選定的選項卡,表示動態加載圖像,inSampleSizeBitmapFactory及其Options不帶inSampleSize

您可以根據不同的設備縮小它們以加載圖像而不會遇到內存問題。 對於您的情況,某些手機在第一次運行時可能不會顯示相同的行爲,但最終,如果不處理優化的圖像加載解決方案,應用程序將會崩潰。

檢查更多內容:在荷載作用下

主題縮小版到內存中。
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Out of memory error on Android

如何避免它們:
How to avoid an out of memory error while using bitmaps in Android

有關概述:
http://blogs.innovationm.com/android-out-of-memory-error-causes-solution-and-best-practices/ http://android-developers.blogspot.de/2009/01/avoiding-memory-leaks.html

此外,android:largeHeap
android:largeHeap="true" convention?

相關問題