2012-09-26 61 views
0

我已經開發出適用於Android 2.1版本的罰款,但是當我啓動它在Android 4.0版本,它不運行,並拋出堆棧跟蹤這樣的應用程序:viewflipper不適用於4.0

 

09-26 19:45:10.961: E/AndroidRuntime(785): FATAL EXCEPTION: main 
09-26 19:45:10.961: E/AndroidRuntime(785): java.lang.OutOfMemoryError 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.Bitmap.nativeCreate(Native Method) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.Bitmap.createBitmap(Bitmap.java:605) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.Bitmap.createBitmap(Bitmap.java:551) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.content.res.Resources.loadDrawable(Resources.java:1937) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.content.res.Resources.getDrawable(Resources.java:664) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.widget.ImageView.resolveUri(ImageView.java:542) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.widget.ImageView.setImageResource(ImageView.java:315) 
09-26 19:45:10.961: E/AndroidRuntime(785): at com.deedatech.AnimalsNameForKids.AnimalsNameForKidsActivity.onCreate(AnimalsNameForKidsActivity.java:85) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.Activity.performCreate(Activity.java:4465) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.os.Looper.loop(Looper.java:137) 
09-26 19:45:10.961: E/AndroidRuntime(785): at android.app.ActivityThread.main(ActivityThread.java:4340) 
09-26 19:45:10.961: E/AndroidRuntime(785): at java.lang.reflect.Method.invokeNative(Native Method) 
09-26 19:45:10.961: E/AndroidRuntime(785): at java.lang.reflect.Method.invoke(Method.java:511) 
09-26 19:45:10.961: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
09-26 19:45:10.961: E/AndroidRuntime(785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
09-26 19:45:10.961: E/AndroidRuntime(785): at dalvik.system.NativeStart.main(Native Method) 

我只是不明白爲什麼會發生這種情況,因爲相同的程序在Android 2.1版本上運行完美,但在4.0版本上拋出outOfMemoryError。請幫助,如果你有一些想法..

回答

0

如果您從UI線程解碼一個位圖,可能會出現outOfMemoryError。嘗試將您的解碼流更改爲asynTask。

+0

但如果這是問題,那麼爲什麼它不顯示它在Android 2.1版本。請幫助我。 –

+1

android.graphics.Bitmap.nativeCreate本機方法的內部實現已經改變,也許在4.0上它需要更多的內存大小。 –

0

與Anis所說的不同,在不同的線程上解碼yor位圖不會幫助您避免內存不足(OOM)錯誤,您仍然將相同數量的數據加載到應用程序中。

您需要縮小圖片的大小或縮小圖片的大小,以免加載所有數據,有關此信息的更多信息請參閱Loading Large Bitmaps Efficiently

+0

但如果這是問題,那麼爲什麼它不顯示它在Android 2.1版本。請幫助我。 –

+0

由於操作系統不同,所以可用內存量可能不一樣。這些設備也可能不同。 –

相關問題