第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果我在 onDestroy() 內(nèi)調(diào)用 recycle() ,“無(wú)法繪制回收的位圖”

如果我在 onDestroy() 內(nèi)調(diào)用 recycle() ,“無(wú)法繪制回收的位圖”

湖上湖 2023-07-13 15:34:45
我有兩項(xiàng)活動(dòng):MainActivity和Activity2。MainActivity只是通過(guò)Intent打開(kāi)第二個(gè)。要返回MainActivity,Activity2我按“后退”按鈕。當(dāng)我執(zhí)行這些步驟時(shí),應(yīng)用程序崩潰:打開(kāi)應(yīng)用程序:MainActivity出現(xiàn)啟動(dòng)Intent:Activity2出現(xiàn)按“返回”按鈕:MainActivity出現(xiàn)啟動(dòng)Intent:我的應(yīng)用程序由于此錯(cuò)誤而崩潰:IllegalArgumentException:無(wú)法繪制回收的位圖MainActivity.java:Intent intent = new Intent(this, Activity2.class); startActivity(intent);Activity2.java:@Overridepublic void onBackPressed() {    super.onBackPressed();}@Overrideprotected void onDestroy() {    super.onDestroy();    for(Map.Entry<Integer, ImageView> entry : mapImageViews.entrySet()) {        ImageView imageView = entry.getValue();        Drawable drawable = imageView.getDrawable();        if (drawable instanceof BitmapDrawable) {            BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;            Bitmap bitmap = bitmapDrawable.getBitmap();            if(bitmap != null) {                bitmap.recycle();            }            bitmapDrawable = null;            bitmap = null;        }        imageView.setOnClickListener(null);        imageView.setImageDrawable(null);        imageView.setImageBitmap(null);        imageView = null;        drawable = null;    }    mapImageViews.clear();    mapImageViews = null;}由于應(yīng)用程序使用高分辨率圖像(已使用BitmapFactory和進(jìn)行調(diào)整inSampleSize),為了避免內(nèi)存泄漏,我recycle()在該onDestroy()方法中調(diào)用。正如我通過(guò)閱讀大量 SO 答案和在網(wǎng)絡(luò)上了解到的那樣,調(diào)用recycle()位圖可以讓它們盡早被垃圾收集。但許多其他帖子建議不要調(diào)用recycle(),或者至少建議僅當(dāng)您確定 Activity 中不再需要位圖(即方法中)時(shí)才執(zhí)行此操作onDestroy()。現(xiàn)在我有點(diǎn)擔(dān)心我所學(xué)到的東西,因?yàn)槿绻覄h除該recycle()錯(cuò)誤就不會(huì)再發(fā)生。該錯(cuò)誤發(fā)生在 Android 設(shè)備上,但在 Android和(Android )4.4.2設(shè)備上不會(huì)發(fā)生。6.0Nexus 75.1.1問(wèn)題出在活動(dòng)堆棧上嗎?GC 嘗試釋放位圖內(nèi)存是否太晚了?在這種情況下,如何徹底銷(xiāo)毀 Activity 及其所有內(nèi)容?這兩個(gè)Android版本有什么區(qū)別嗎?或者我遺漏/錯(cuò)誤的東西?
查看完整描述

3 回答

?
翻翻過(guò)去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

嘗試改變你的onDestroy方法如下


@Override

protected void onDestroy() {

? ? for(Map.Entry<Integer, ImageView> entry : mapImageViews.entrySet()) {

? ? ? ? ImageView imageView = entry.getValue();

? ? ? ? Drawable drawable = imageView.getDrawable();

? ? ? ? if (drawable instanceof BitmapDrawable) {

? ? ? ? ? ? BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;

? ? ? ? ? ? Bitmap bitmap = bitmapDrawable.getBitmap();

? ? ? ? ? ? if(bitmap != null) {

? ? ? ? ? ? ? ? bitmap.recycle();

? ? ? ? ? ? }

? ? ? ? ? ? bitmapDrawable = null;

? ? ? ? ? ? bitmap = null;

? ? ? ? }

? ? ? ? imageView.setOnClickListener(null);

? ? ? ? imageView.setImageDrawable(null);

? ? ? ? imageView.setImageBitmap(null);

? ? ? ? imageView = null;

? ? ? ? drawable = null;

? ? }

? ? mapImageViews.clear();

? ? mapImageViews = null;


? ? super.onDestroy();

}

查看完整回答
反對(duì) 回復(fù) 2023-07-13
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

根據(jù)回收文件

位圖被標(biāo)記為“死”,這意味著如果調(diào)用 getPixels() 或 setPixels() 它將拋出異常,并且不會(huì)繪制任何內(nèi)容。此操作無(wú)法逆轉(zhuǎn),因此僅當(dāng)您確定該位圖不再使用時(shí)才應(yīng)調(diào)用它。

我看不到你如何將 your 分配bitmaps給 your?ImageView,但我假設(shè)當(dāng)你在位圖被使用后再次啟動(dòng)意圖時(shí),你正在嘗試重用位圖recycled。我只在使用時(shí)遇到異常android:src=。如果我ImageView使用以下內(nèi)容設(shè)置位圖oncreate,它在您列出的所有目標(biāo)上運(yùn)行良好,不會(huì)引發(fā)異常。

imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(),?R.drawable.lake_park));
查看完整回答
反對(duì) 回復(fù) 2023-07-13
?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

實(shí)際上我認(rèn)為你不必手動(dòng)執(zhí)行此操作。

如果 Activity2 只有 1 個(gè)圖像并且已經(jīng)調(diào)整大小,我認(rèn)為如果您確實(shí)面臨內(nèi)存問(wèn)題,回收不會(huì)有太大幫助。

并且根據(jù)該文檔,僅建議API級(jí)別低于10的用戶(hù)使用recycle(),并且用戶(hù)的比例很小。?On Android 2.3.3 (API level 10) and lower, using recycle() is recommended.?

我想推薦使用第三方圖像庫(kù),因?yàn)樗鼈兛梢宰屇庥谧鲞@些無(wú)意義的事情,讓您專(zhuān)注于應(yīng)用程序更重要的部分。


查看完整回答
反對(duì) 回復(fù) 2023-07-13
  • 3 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)