簡體   English   中英

通過Intent.putExtra發送字節數組不起作用

[英]Sending a Byte Array via Intent.putExtra does not work

我正在嘗試通過Intent putExtra方法將捕獲的圖像的字節數組數據發送到另一個視圖,但是它僅適用於前置攝像頭 (因為質量低於后置攝像頭)。 通過后置攝像頭捕獲的照片需要經過一段時間才能顯示,並且大多數時間會使應用崩潰。

我也嘗試壓縮,但這也沒有解決問題。 看一下我的代碼:

captureImage.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                mCamera.takePicture(null, null, new PictureCallback() {
                    @Override
                    public void onPictureTaken(byte[] data, Camera camera) {

                            Intent i = new Intent(CameraActivity.this, ImageEditor.class);
                            i.putExtra("image", data);
                            startActivityForResult(i, 0);

                         }
                });
            }
        });

捕獲圖像(通過后置攝像頭)后,第二個活動不會打開,應用也不會響應。 但是,這對前置攝像頭有效,因為我猜測字節數組的大小相對較小,並且比后置攝像頭捕獲的圖片需要更少的內存。

如何解決此問題,以便將在活動A中捕獲的圖像發送到活動B?

如何解決此問題,以便將在活動A中捕獲的圖像發送到活動B?

最好的答案是:根本不要這樣做。 如果這些用戶界面緊密相連,那么它們應該是一項活動,可能需要使用多個片段。

下一個最佳答案是: 小心地通過static數據成員傳遞它(例如,活動A將byte[]放在static數據成員中,活動B從那里獲取它)。 您需要通過在活動B引用該數據后立即將數據成員設置為null來確保不泄漏此byte[]

首先嘗試(如果可能,僅用於測試目的):

AndroidManifest.xml中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="package_name"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:name="app_name"
        android:allowBackup="true"
        android:label="@string/app_name"
        android:largeHeap="true" <!-- large heap --> 
        android:theme="@style/AppTheme" >
</manifest>

來自https://developer.android.com/training/articles/memory.html

檢查應該使用多少內存。但是,請求大堆的功能僅適用於少數可以證明需要消耗更多RAM的應用程序(例如大型照片編輯應用程序)。 切勿僅僅因為內存用完並且需要快速修復而請求大堆-僅在確切知道所有內存的分配位置以及為什么必須保留它時,才應使用它。 但是,即使您確信自己的應用程序可以證明大堆的合理性,也應盡可能避免請求它。 使用額外的內存將越來越不利於整體用戶體驗,因為在任務切換或執行其他常見操作時,垃圾回收將花費更長的時間並且系統性能可能會降低。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM