2015-11-05 69 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中警告有关位图泄漏的问题。如何解决它? – Gopal

+0

检查您是否正在存储具有(活动)销毁对象的(硬)引用的位图。您可以安装LeakCanary来尝试调查问题。 – ctarabusi