简体   繁体   中英

Play Console Crash Reports (OutOfMemory)

I'm new on Android. I published my first app. I tested my app on several devices. It is working properly. And I published it. 40 times downloaded and I got 3 crash reports. I couldn't figure out where I am wrong? And how to fix them? Or should I fix? Are crash reports mean the program has stopped working? Thanks in advance.

My reports:

LGE V20 (elsa), 4096MB RAM, Android 7.0
Report 1 of 1
java.lang.OutOfMemoryError: 
  at dalvik.system.VMRuntime.newNonMovableArray (Native Method)
  at android.graphics.BitmapFactory.nativeDecodeAsset (Native Method)
  at android.graphics.BitmapFactory.decodeStream (BitmapFactory.java:620)
  at android.graphics.BitmapFactory.decodeResourceStream (BitmapFactory.java:455)
  at android.graphics.drawable.Drawable.createFromResourceStream (Drawable.java:1152)
  at android.content.res.ResourcesImpl.loadDrawableForCookie (ResourcesImpl.java:855)
  at android.content.res.ResourcesImpl.loadDrawable (ResourcesImpl.java:706)
  at android.content.res.Resources.getDrawable (Resources.java:776)
  at android.content.Context.getDrawable (Context.java:525)
  at android.widget.ImageView.resolveUri (ImageView.java:840)
  at android.widget.ImageView.setImageResource (ImageView.java:439)
  at com.taishi.flipprogressdialog.FlipProgressDialog$1.run (FlipProgressDialog.java:181)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6247)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:872)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:762)

Umx(Ultimate Mobile Experience) U673C (U673C), 1024MB RAM, Android 6.0
Report 1 of 1
java.lang.IllegalStateException: 
  at android.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1411)
  at android.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1429)
  at android.app.BackStackRecord.commitInternal (BackStackRecord.java:687)
  at android.app.BackStackRecord.commit (BackStackRecord.java:663)
  at android.app.DialogFragment.dismissInternal (DialogFragment.java:301)
  at android.app.DialogFragment.dismiss (DialogFragment.java:267)
  at com.example.genesis.policeradiostream.TopFeedsFragment$Listeleme.onPostExecute (TopFeedsFragment.java:172)
  at com.example.genesis.policeradiostream.TopFeedsFragment$Listeleme.onPostExecute (TopFeedsFragment.java:95)
  at android.os.AsyncTask.finish (AsyncTask.java:651)
  at android.os.AsyncTask.access$500 (AsyncTask.java:180)
  at android.os.AsyncTask$InternalHandler.handleMessage (AsyncTask.java:668)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:148)
  at android.app.ActivityThread.main (ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

Samsung Galaxy S5 (klteusc), 2048MB RAM, Android 6.0
Report 1 of 1
java.lang.OutOfMemoryError: 
  at com.google.android.exoplayer2.extractor.DefaultTrackOutput$InfoQueue.commitSample (DefaultTrackOutput.java:920)
  at com.google.android.exoplayer2.extractor.DefaultTrackOutput.sampleMetadata (DefaultTrackOutput.java:536)
  at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.readSample (Mp3Extractor.java:226)
  at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.read (Mp3Extractor.java:189)
  at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load (ExtractorMediaPeriod.java:652)
  at com.google.android.exoplayer2.upstream.Loader$LoadTask.run (Loader.java:295)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588)
  at java.lang.Thread.run (Thread.java:818)

Error 1 and 3 are basically the Android system telling your program that the amount of memory your program asked for bitmap or some video file can not be allocated. Usually this happens when you are trying to load a big file into the memory. There are lots of ways you can avoid this from happening like example: making sure you only load the image in a resolution that is going to be displayed. There's no point in loading a 1920px * 1080px image in a 100px*100px view.

Whereas 2 happens when you are accessing some activity or fragment element after it gets destroyed. Make sure you are not accessing anything related to activity or fragment in asynctask's onPostExecute method. Otherway is to cancel your asynctask when the activity or fragment gets destroyed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM