2015-11-05 4 views
-5

Я создаю приложение для Android. Я хочу, чтобы он работал в обеих ориентациях. Когда я запускаю его в ландшафтном режиме, он работает хорошо, но при изменении его на портрет приложение прекратилось. снова открываю, он будет работать нормально. это моя проблема. когда я меняю ориентацию. В первый раз отображается ошибка. помогите мне решить эту проблему.Приложение для Android прекращается при изменении ориентации

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)  
+0

Опубликуйте свой 'LogCat' или что-то в этом роде. Если вы не публикуете данные, это невозможно. – Aspicas

+0

опубликуйте свой logcat – Dilip

+0

, пожалуйста, напишите свой «logcat», когда появится ошибка, а также некоторый «код», чтобы лучше понять вашу ситуацию. –

ответ

1

Вы получаете исключение OutOfMemory, когда ваша деятельность воссоздается после изменения ориентации.

Я мог бы предположить, что в вашей FrameActivity вы пропускаете растровые изображения при каждом создании активности, не позволяя GC освобождать достаточную память.

+0

Вы правильно, несколько раз, в предупреждении Logcat о утечке Bitmap. как это исправить? – Gopal

+0

Проверьте, сохраняете ли вы растровые изображения с (твердыми) ссылками на объекты (объекты), которые вызывают разрушение активности. Вы можете установить LeakCanary, чтобы попытаться расследовать эту проблему. – ctarabusi

Смежные вопросы