簡體   English   中英

parse.com-Android-無法將大型ParseObject固定到本地數據存儲區

[英]parse.com - Android - unable to pin large size ParseObject to local datastore

我在Google Glass設備上使用Parse.com,並且嘗試將較大的ParseObject(大約50 MB)固定到本地數據存儲區。 我注意到,在堆內存超過10MB之后,固定過程將暫停,並且不會引發任何異常。 我也嘗試依次固定一系列ParseObject(一次),但是同樣,當堆達到10MB時,固定過程將暫停。 有時它比其他時候固定更多的對象,所以我猜測Java GC有時比其他人更努力。 請幫助我,或者給我一種替代的方法,用於在內部存儲大型對象(包含大量圖像)。

1)如果我正確理解了您的問題,則希望將圖像存儲在手機中(以便您的應用稍后可以檢索),然后您可以嘗試將其存儲在SD卡中:

 public static boolean storeImage(Bitmap bitmap, String filename) {

        boolean stored = false;
        String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() +
                "/myFolder";
        File dir = new File(file_path);
        if(!dir.exists())
            dir.mkdirs();
        File fileToStored = new File(dir, filename + ".png");
        try {
            FileOutputStream outputStream = new FileOutputStream(fileToStored);
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, outputStream);
            outputStream.flush();
            outputStream.close();
            stored = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stored;
    }

*清單文件中需要權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

2)使用Parse 2個月后,還有另一種方法供您使用Parse數據庫中的字符串來存儲圖像(注意Image列是一個字符串)和base64解碼/編碼:

 public static Bitmap decodeBase64(String input) {
        if (input == null) return  null;
        byte[] decodedByte = Base64.decode(input, Base64.NO_WRAP);
        return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
    }

 public static String encodeTobase64(Bitmap image) {
        Bitmap immagex=image;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();
        String imageEncoded = Base64.encodeToString(b, Base64.NO_WRAP);
        Log.e(TAG, "encoded Img: " + imageEncoded);
        return imageEncoded;
    }

*注意:使用NO_WRAP而不是DEFAULT,以便iOs應用程序還可以對字符串進行編碼和解碼

3)另一種存儲圖像的選項,我更喜歡將其存儲在服務器上,然后在需要時進行檢索,您可以將其存儲在自己的服務器上,或者使用其他著名的服務,我已經嘗試過Imgur API,並且效果很好(當然,如果您的應用每天沒有1,250次上傳或每天沒有大約12,500個請求,則它是免費的)

API文檔: https//api.imgur.com/

Android上傳樣本: https : //github.com/AKiniyalocts/imgur-android

如果您知道其他更好的方法,請隨時發表評論。 技術日新月異!

暫無
暫無

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

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