Search code examples
androidandroid-layoutandroid-orientation

Android App get Stopped When Changing the orientation


I am creating an Android app. I want it to work in both orientations. When I run it in landscape mode it works well but while changing it to portrait,the app stopped. again I open it will work normally. this is my problem. when I change the orientation. First time it shows error. help me to solve this issue.

11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground()
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
  11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:856)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:  Caused by: java.lang.OutOfMemoryError
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:529)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:302)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at com.infizoom.smartselfie2.Helper.decodeSampledBitmapFromPath(Helper.java:32)
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at com.infizoom.smartselfie2.FrameActivity.LoadImagesFromLocalDb(FrameActivity.java:195)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at com.infizoom.smartselfie2.FrameActivity$LoadImagesIntoLocal.doInBackground(FrameActivity.java:136)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at com.infizoom.smartselfie2.FrameActivity$LoadImagesIntoLocal.doInBackground(FrameActivity.java:114)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
  11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
 11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
  11-05 16:40:44.010 10204-10250/com.infizoom.smartselfie2 E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:856) 

Solution

  • You are getting an OutOfMemory exception when your activity gets recreated after orientation change.

    I could guess in your FrameActivity you are leaking bitmaps on every activity creation not allowing the GC to free up enough memory.