我的問題是什麼(KISS)? ,詳細顯示了第三個圖片後,我的應用程序崩潰導致內存溢出我的應用程序Android OutOfMemory
背景資料: 我做了一個脫機超市。所有產品都以ListView顯示。 我使用的所有圖像都被存儲爲由SugarORM在sqlite數據庫中的字符串(來自每個圖像的Uri)。 ListView元素獲得了一個ArrayAdapter,其中ListView中的每個項目的信息都被設置。 像這樣:
ImageView imageView = (ImageView) rowView.findViewById(R.id.productimage);
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
imageView.setImageURI(productList.get(position).getPictureUri());
handler.removeCallbacks(this);
}
});
我的目的是,要在後臺加載的圖片點擊它,加載圖像,甚至之前(但它did'nt工作對我來說:顯示在圖像/,但我無法點擊任何其他視圖元素,而加載圖像)。 的 「getPictureUri」 會從圖片的URI管理員已choosen與下面的代碼的產品:
Intent pickPhoto = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhoto,1);
AndroidManifest.xml中
android:hardwareAccelerated="false"
android:largeHeap="true"
我只延伸從「AppCompatActivity「(需要工具欄)。這意味着:我不會使用「活動」甚至一次。
任何人都可以給我一個很好的建議,如何清除緩存的圖像(我認爲這可能是問題),此外,也許你有一個時間來幫助我與我的「圖像異步加載,而你可以在應用程序中自由移動「問題。
關於凍結:正如setImageUri的文檔所說:「這會在UI線程上進行位圖讀取和解碼,這可能會導致延遲打嗝,如果這是一個問題,請考慮使用setImageDrawable(Drawable)或setImageBitmap(android.graphics。位圖)和BitmapFactory。「 https://developer.android.com/reference/android/widget/ImageView.html#setImageURI(android.net.Uri) –
但是,適當的圖像加載很難實現。我建議爲此使用庫,Glide https://github.com/bumptech/glide即使使用默認設置也非常出色。它甚至可以解決你的問題,因爲內存不足異常。 –
@ josef.adamcik第1條評論:感謝您的建議,我現在可以看看它。第2條評論:我想僅使用我的應用程序離線。我不認爲,這種下滑爲我提供了可能性(只是假定它只適用於在線URL),以從URI加載圖像,這些圖像保存在手機中。 –