Android: java.lang.OutOfMemoryError: nie udało się przydzielić 23970828 bajtów z 2097152 wolnymi bajtami i 2MB do OOM

Chcę pokazać bitmapę obraz w ImageView z karty sd, która jest już przechowywana. Po uruchomieniu moja aplikacja jest crash I getting OutOfMemoryError error of:

(java.lang.OutOfMemoryError: nie udało się przydzielić 23970828 bajtów z 2097152 wolnymi bajtami i 2MB do OOM)

Nie mam pojęcia, ani dlaczego jest z pamięci. Myślę, że mój Rozmiar obrazu jest bardzo duży, więc próbowałem go zmienić.

Iterator<String> it = imageArray.iterator();
while (it.hasNext()) {
  Object element = it.next();
  String objElement = element.toString();
  Log.e("objElement ", " = " + objElement);
  final ImageView imageView = new ImageView (getContext());
  final ProgressBar pBar = new ProgressBar(getContext(), null, 
                                           android.R.attr.progressBarStyleSmall);
  imageView.setTag(it);
  pBar.setTag(it);

  imageView.setImageResource(R.drawable.img_placeholder);
  pBar.setVisibility(View.VISIBLE);

  if (objElement.endsWith(mp3_Pattern)) {
     Log.e("Mp3 ", " ends with ");
     pBar.setVisibility(View.GONE);
     imageView.setImageResource(R.drawable.audio_control);
  }
  if (objElement.endsWith(png_Pattern)) {
     Bitmap bitmap = BitmapFactory.decodeFile(objElement);
     int size = Math.min(bitmap.getWidth(), bitmap.getHeight());
     int x = (bitmap.getWidth() - size) / 2;
     int y = (bitmap.getHeight() - size) / 2;
     Bitmap bitmap_Resul = Bitmap.createBitmap(bitmap, x, y, size, size);
     Log.e("bitmap_Resul "," = "+ bitmap_Resul);

     if (bitmap_Resul != bitmap) {
        bitmap.recycle();
     }
     imageView.setImageBitmap(bitmap_Resul);
     Log.e("png_Pattern ", " ends with ");
     Log.e(" bitmap "," = " + bitmap);
  }

  holder.linearLayout.addView(imageView);
  holder.linearLayout.addView(pBar);

The log cat informacje:

08-27 14:11:15.307    1857-1857/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.tazeen.classnkk, PID: 1857
    java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:812)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:789)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:709)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:634)
            at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getView(AllPosts_Page.java:357)
            at android.widget.AbsListView.obtainView(AbsListView.java:2347)
            at android.widget.ListView.makeAndAddView(ListView.java:1864)
            at android.widget.ListView.fillDown(ListView.java:698)
            at android.widget.ListView.fillFromTop(ListView.java:759)
            at android.widget.ListView.layoutChildren(ListView.java:1659)
            at android.widget.AbsListView.onLayout(AbsListView.java:2151)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
            at android.view.View.layout(View.java:15671)
            at android.view.ViewGroup.layout(ViewGroup.java:5038)
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
            at android.view.Choreographer.doCallbacks(Choreographer.java:580)
            at android.view.Choreographer.doFrame(Choreographer.java:550)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Author: Cœur, 2015-08-27

24 answers

OutOfMemoryError jest najczęstszym problemem występującym w systemie android, szczególnie w przypadku bitmap. Ten błąd jest wyrzucany przez maszynę Wirtualną Java (JVM), gdy obiekt nie może zostać przydzielony z powodu braku miejsca w pamięci, a także, garbage collector nie może zwolnić trochę miejsca.

Jak wspomniano przez Aleksey, możesz dodać poniżej encje w pliku manifestu android:hardwareAccelerated="false" , android:largeHeap="true" będzie działać w niektórych środowiskach.

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

Zdecydowanie powinieneś przeczytać niektóre Androidy Koncepcja programisty, szczególnie tutaj: wydajne wyświetlanie Bitmap

Przeczytaj wszystkie 5 tematów i przepisz kod ponownie. Jeśli nadal nie zadziała, z przyjemnością zobaczymy, co zrobiłeś źle z materiałem samouczka.

Oto kilka możliwych odpowiedzi na tego typu błędy w SOF

Android: BitmapFactory.decodeStream() out of memory with a 400KB file with 2MB free heap

Jak rozwiązać Javę.lang.OutOfMemoryError problem w Android

Android: java.lang.OutOfMemoryError

Java.lang.OutOfMemoryError

Rozwiązanie dla OutOfMemoryError: rozmiar bitmapy przekracza budżet maszyny wirtualnej

Edit: z komentarzy @cjnash

Dla każdego, kto nadal miał awarie po dodaniu tej linii, spróbuj umieścić swój obraz w folderze res/ drawable-xhdpi/zamiast res/ drawable / i może to rozwiązać twój problem.

 352
Author: King of Masses,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 03:57:39

Czy próbowałeś dodać to do manifestu pod aplikacjami? android:largeHeap="true"?

Like this

  <application
      android:name=".ParaseApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme"
      android:largeHeap="true" >
 72
Author: TSG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-19 06:47:05

Właściwie możesz dodać w swoim manifeście te linie android:hardwareAccelerated="false" , android:largeHeap="true" działa w niektórych sytuacjach, ale należy pamiętać, że druga część kodu może się z tym kłócić.

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
 24
Author: Aleksey Timoshchenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-03 05:49:20

Dla mnie problemem było to, że mójplik png był dekompresowany tak, aby był naprawdę ogromną bitmapą w pamięci, ponieważ obraz miał bardzo duże wymiary (chociaż Rozmiar Pliku był niewielki).

Więc poprawka polegała na prostej zmianie rozmiaru obrazu:)

 18
Author: petrus-jvrensburg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 14:19:55

To powinno zadziałać

 BitmapFactory.Options options = new BitmapFactory.Options();
 options.inSampleSize = 8;

 mBitmapInsurance = BitmapFactory.decodeFile(mCurrentPhotoPath,options);
 14
Author: Akshay komarla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 08:38:06

Zmień rozmiar obrazu przed ustawieniem na ImageView w następujący sposób:

Bitmap.createScaledBitmap(_yourImageBitmap, _size, _size, false);

Gdzie size to rzeczywisty rozmiar ImageView. Możesz osiągnąć rozmiar mierząc:

imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

I użyj następnego rozmiaru imageView.getMeasuredWidth() i imageView.getMeasuredHeight() dla scaling.

 8
Author: Vladimir Eremeev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 18:37:27

Użyj Glide Library i Nadpisz rozmiar do mniejszego rozmiaru;

Glide.with(mContext).load(imgID).asBitmap().override(1080, 600).into(mImageView);
 6
Author: Mahdi Azadbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-20 20:16:35

Rozwiązałem ten problem, zmieniając rozmiar obrazu na mniejszy. Używam formularza xamarin. zmniejszenie rozmiaru obrazu PNG rozwiązało problem.

 4
Author: maxspan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 20:41:53

I got below error

"E / art: Throwing OutOfMemoryError" nie udało się przydzielić bajtu 47251468 alokacja z 16777120 wolnych bajtów i 23MB do OOM "

Po dodaniu android:largeHeap="true"W AndroidManifest.xml wtedy pozbywam się wszystkich błędów

<application
    android:allowBackup="true"
    android:icon="@mipmap/guruji"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:largeHeap="true"
    android:theme="@style/AppTheme">
 3
Author: saigopi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 21:34:00

Soluton spróbuj tego w pliku Manifest i użyj Biblioteki Glide

Compile ' com.github.bumptech.glide:glide: 3.7.0 "

    **Use Glide Library and Override size to less size;**

 if (!TextUtils.isEmpty(message.getPicture())) {
            Glide.with(mContext).load(message.getPicture())
                    .thumbnail(0.5f)
                    .crossFade()
                    .transform(new CircleTransform(mContext))
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(holder.imgProfile);
        } 

Android: hardwareAccelerated= "false"

Android: largeHeap= "true"

<application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

Użyj tej biblioteki

  compile 'com.github.bumptech.glide:glide:3.7.0'   

Its Working Happy Coding

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;


public class CircleTransform extends BitmapTransformation {
    public CircleTransform(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        // TODO this could be acquired from the pool too
        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override
    public String getId() {
        return getClass().getName();
    }
}
 3
Author: Keshav Gera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-15 17:57:16

Problem : nie udało się przydzielić 37748748 bajtów przy 16777120 wolne bajty i 17MB do OOM

Rozwiązanie : 1.otwórz plik manifestu 2. wewnątrz znacznika aplikacji wystarczy dodać poniżej dwie linie

 android:hardwareAccelerated="false"
 android:largeHeap="true"

Przykład:

 <application
        android:allowBackup="true"
        android:hardwareAccelerated="false"
        android:largeHeap="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
 3
Author: Kishore Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 11:28:50

Ja też miałem problem.

To samo z większością innych powyżej. Problem jest spowodowany przez ogromny obraz.

Po prostu zmień rozmiar niektórych obrazów, i nie trzeba zmieniać żadnego kodu.

 2
Author: Mike Yan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-09 02:26:06

Jestem nowicjuszem w rozwijaniu Androida, ale mam nadzieję, że moje rozwiązanie pomoże, działa idealnie na Mój stan. Im za pomocą Imageview i ustawić to tło do "src", ponieważ im próbuje animacji klatki. Mam ten sam błąd, ale kiedy próbowałem to kodować, działało

int ImageID = this.Resources.GetIdentifier(questionPlay[index].Image.ToLower(), "anim", PackageName);
            imgView.SetImageResource(ImageID);
            AnimationDrawable animation = (AnimationDrawable)imgView.Drawable;
            animation.Start();
            animation.Dispose();
 1
Author: DianeFlores,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-26 08:24:56

W niektórych przypadkach (np. operacje w pętli) garbage collector jest wolniejszy niż twój kod. Możesz użyć metody pomocniczej z tej odpowiedzi do poczekaj na garbage collector .

 1
Author: Zon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 06:06:45

Napotkałem ten problem, gdy nie zniszczyłem mojej starej aktywności, przechodząc do nowej aktywności. I fixed it with finish();

    Intent goToMain = new Intent(this,MainActivity.class);
    startActivity(goToMain);
    finish();
 1
Author: Jason Hu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-03 17:36:15

To zadziałało dla mnie: po prostu przenieś obrazy z folderu drawable do drawable-hdpi.

 1
Author: Hossein Amini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-14 14:58:11
Bitmap image =((BitmapDrawable)imageView1.getDrawable()).getBitmap();

ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();

image.compress(Bitmap.CompressFormat.JPEG,50/100,byteArrayOutputStream);

50/100 jeśli ktoś używa 100 to oryginalna rozdzielczość może zatrzymać aplikacje dla out of memory.

Jeśli 50 lub mniej niż 100 to będzie to 50% lub mniej niż 100 rozdzielczość, więc zapobiegnie to problemowi out of memory

 1
Author: RAHINUR RAHMAN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-06 11:29:26

Odkryłem, że obrazy w folderze 'drawable' zostaną przekonwertowane na znacznie większy obraz w telefonach high def. Na przykład, obraz 200k zostanie ponownie próbkowany do wyższej rozdzielczości, jak 800k lub 32000k. musiałem to odkryć na własną rękę i do tej pory nie widziałem dokumentacji dla tej pułapki pamięci sterty. Aby temu zapobiec umieszczam wszystko w folderze drawable-nodpi (oprócz korzystania z 'options' w BitmapFactory na podstawie konkretnego sterty urządzenia). Nie mogę sobie pozwolić na nadęty rozmiar mojej aplikacji z wieloma rysowalnymi folderami, zwłaszcza że zakres defs ekranu jest teraz tak szeroki. Najtrudniejsze jest to, że studio teraz nie wskazuje dokładnie folderu "drawable-nodpi" jako takiego w widoku projektu, po prostu pokazuje folder "drawable". Jeśli nie będziesz ostrożny, gdy upuścisz obraz do tego folderu w studio, nie zostanie on wrzucony do drawable-nodpi:

Careful here 'backgroundtest' did not actually go to drawable-nodpi and will 
be resampled higher, such as 4x or 16x of the original dimensions for high def screens.

Tutaj wpisz opis obrazka

Pamiętaj, aby kliknąć w dół do folderu nodpi w oknie dialogowym, ponieważ widok projektu nie Pokaż wszystkie foldery drawable osobno, tak jak kiedyś, więc nie będzie od razu widać, że poszedł do złego. Studio odtworzyło waniliowy "drawable" w pewnym momencie dla mnie po tym, jak usunąłem go dawno temu: {]}

Tutaj wpisz opis obrazka

 1
Author: Androidcoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-12 18:50:02

Musisz zmienić rozmiar obiektu w drawable. Jest zbyt duży dla Androida, aby go wyświetlić. np. jeśli ustawiasz obraz, spróbuj obraz z mniejszą liczbą pikseli. Dla mnie działa. Dzięki. :)

 1
Author: Ali Hassan Qureshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-31 11:29:42

Twoja aplikacja zawiesza się, ponieważ Rozmiar obrazu (w MB lub KB) jest zbyt duży , więc nie przeznacza na to miejsca. Więc przed wklejeniem obrazu w drawable po prostu zmniejsz rozmiar.

Lub

Możesz dodać następujące w znaczniku aplikacji w manifeście.xml

 android:hardwareAccelerated="false"
    android:largeHeap="true"
    android:allowBackup="true"

Po dodaniu Ta aplikacja nie zawiesi.

  • Zawsze używaj obrazów o mniejszych rozmiarach w aplikacji.
  • Jeśli dodajesz duże rozmiary obrazów w aplikacji, powinieneś dodać powyżej syntex, ale rozmiar aplikacji wzrośnie.
 1
Author: rhaldar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-23 07:45:48

Jeśli przesyłasz obraz, spróbuj zmniejszyć jakość obrazu, która jest drugim parametrem mapy bitowej. Takie było rozwiązanie w moim przypadku. Wcześniej było to 90, następnie próbowałem z 60(jak to jest w kodzie poniżej teraz).

Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
finalBitmap.compress(Bitmap.CompressFormat.JPEG,60,baos);
byte[] b = baos.toByteArray();
 0
Author: Teo Mihaila,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-01 12:39:22

Spróbuj najprostszego. Być może Twoja aplikacja zawiesza się, ponieważ Rozmiar obrazu (w MB) jest zbyt duży, więc nie przeznacza na to miejsca. Tak więc przed wklejeniem obrazu w drawable po prostu zmniejsz rozmiar przez dowolne oprogramowanie przeglądarki lub jeśli bierzesz obraz z galerii w czasie wykonywania niż przed zapisaniem skompresuj bitmapę. U mnie zadziałało. zdecydowanie dla ciebie będzie.

 0
Author: neens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-18 10:27:57

Mój problem rozwiązany po dodaniu

 dexOptions {
        incremental true
        javaMaxHeapSize "4g"
        preDexLibraries true
        dexInProcess = true
    }

In Build.Gradle file

 0
Author: Midhilaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 14:16:01
stream = activity.getContentResolver().openInputStream(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;

bitmap = BitmapFactory.decodeStream(stream, null, options);
int Height = bitmap.getHeight();
int Width = bitmap.getWidth();
enter code here
int newHeight = 1000;
float scaleFactor = ((float) newHeight) / Height;
float newWidth = Width * scaleFactor;

float scaleWidth = scaleFactor;
float scaleHeight = scaleFactor;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
resizedBitmap= Bitmap.createBitmap(bitmap, 0, 0,Width, Height, matrix, true);
bitmap.recycle();

Następnie w znaczniku Appliaction dodaj largeheapsize= " true

 0
Author: sathish mobapp dev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-08 04:55:02