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

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

使用android意圖在活動(dòng)中傳遞android位圖數(shù)據(jù)

使用android意圖在活動(dòng)中傳遞android位圖數(shù)據(jù)

幕布斯6054654 2019-07-09 13:30:34
使用android意圖在活動(dòng)中傳遞android位圖數(shù)據(jù)我有一個(gè)位圖變量bmp在Activity1中,我想將位圖發(fā)送到Activity2下面是我用來傳遞它的意圖的代碼。Intent in1 = new Intent(this, Activity2.class);in1.putExtra("image",bmp);startActivity(in1);在Activity 2中,我嘗試使用以下代碼訪問位圖Bundle ex = getIntent().getExtras();Bitmap bmp2 = ex.getParceable("image");ImageView result = (ImageView)findViewById(R.Id.imageView1);result.setImageBitmap(bmp);應(yīng)用程序毫無例外地運(yùn)行,但它沒有給出預(yù)期的結(jié)果。
查看完整描述

3 回答

?
慕容森

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

在將其添加到意圖之前,將其轉(zhuǎn)換為Byte數(shù)組,然后將其發(fā)送出去并解碼。

//Convert to byte arrayByteArrayOutputStream stream = new ByteArrayOutputStream();bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);byte[] byteArray = stream.toByteArray();Intent in1 = new Intent(this, Activity2.class);in1.putExtra("image",byteArray);

然后在活動(dòng)2中:

byte[] byteArray = getIntent().getByteArrayExtra("image");Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

編輯

我想我應(yīng)該用最佳實(shí)踐來更新它:

在第一個(gè)活動(dòng)中,應(yīng)該將位圖保存到磁盤,然后在下一個(gè)活動(dòng)中加載它。確保在第一個(gè)活動(dòng)中循環(huán)使用位圖,使其成為垃圾收集的主要內(nèi)容:

活動(dòng)1:

try {
    //Write file
    String filename = "bitmap.png";
    FileOutputStream stream = this.openFileOutput(filename, Context.MODE_PRIVATE);
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);

    //Cleanup
    stream.close();
    bmp.recycle();

    //Pop intent
    Intent in1 = new Intent(this, Activity2.class);
    in1.putExtra("image", filename);
    startActivity(in1);} catch (Exception e) {
    e.printStackTrace();}

在活動(dòng)2中,加載位圖:

Bitmap bmp = null;String filename = getIntent().getStringExtra("image");try {
    FileInputStream is = this.openFileInput(filename);
    bmp = BitmapFactory.decodeStream(is);
    is.close();} catch (Exception e) {
    e.printStackTrace();}

干杯!


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
冉冉說

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

有時(shí),位圖可能太大,無法編碼和解碼,也不能作為字節(jié)數(shù)組傳遞。這可能會(huì)導(dǎo)致OOM或糟糕的UI體驗(yàn)。

我建議考慮將位圖放入新活動(dòng)的靜態(tài)變量(使用它的那個(gè)),當(dāng)您不再需要它時(shí),它將謹(jǐn)慎地為空(在onDesty中,但只有當(dāng)“isChangingConfigurations”返回false時(shí),它的含義才是空的)。


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
精慕HU

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

簡單地說,我們可以只傳遞Bitmap的URI,而不是傳遞Bitmap對(duì)象。如果位圖對(duì)象很大,這將導(dǎo)致內(nèi)存問題。

第一行動(dòng)。

intent.putExtra("uri", Uri);

從第二個(gè)活動(dòng)中我們得到位圖。

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),Uri.parse(uri));



查看完整回答
反對(duì) 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 445 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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