2012-02-20 19 views
9

Otrzymuję następujący stacktrace w konsoli programisty. Niektóre raporty mówią "aplikacja się nie uruchamia" lub "awaria podczas uruchamiania".Tajemniczy stacktrace w konsoli programisty Androida (rozmiar bitmapy przekracza 32bits)

Nie wiem, co robić, nie wspominając o żadnych na mojej klasie aplikacji! Czy ktoś ma ten sam błąd i znalazł poprawkę?

java.lang.IllegalArgumentException: bitmap size exceeds 32bits 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:695) 
at android.view.View.buildDrawingCache(View.java:6646) 
at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1345) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1591) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054) 
at android.view.ViewRoot.draw(ViewRoot.java:1632) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4358) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 
+1

może być tak, twoje zasoby Główne obciążenia działalności związanej do jego układu "na zewnątrz" swojego zasięgu. W każdym razie wydaje się, że niektóre obrazy powodują problemy i jeśli nie ma ich zbyt wielu, spróbuj zastąpić je jedną po drugiej za pomocą np. domyślna ikona Androida, aż znajdziesz tę, która powoduje problemy. – harism

+0

Czasami miałem do czynienia z tym samym problemem, gdy tworzyłem widżet. Zwykle został wyleczony przez (to było w Eclipse btw) czyszczenie projektu (menu Projekt-> Wyczyść), a następnie odświeżenie projektu i ponowne jego zbudowanie. Ale jeśli ktoś wie dokładnie, dlaczego tak się dzieje, to byłoby wspaniale i zdecydowanie zagłosuję za odpowiedzią! ;) –

Odpowiedz

5

jeśli jest to kwestia ilości, musisz recycle swoich bitmap.
Jeśli jest to kwestia wielkości (nie można załadować zbyt dużych obrazów), musisz załadować jaśniejszą kopię swojej bitmapy.

Oto kod, aby utworzyć mniejszy obraz

Options thumbOpts = new Options(); 
thumbOpts.inSampleSize = 4; 
Bitmap bmp = BitmapFactory.decodeFile(imagePath, mThumbOpts); 

inSampleSize ustawiona na wartość> 1, żąda dekoder do podpróba oryginalny obraz, wracając mniejszy obraz, aby zapisać w pamięci.
Użyj mocy 2, aby zwiększyć wydajność.

This post mogą być użyteczne

+2

To przyniesie pracę, nie ma nic wspólnego z rozmiarem, zobacz moje pytanie: [tutaj] (http://stackoverflow.com/questions/15008386/android-bitmap-size-exceeds-32-bit-in- dialogfragment/15008630 # 15008630) – stefple

+1

Jak to rozwiązuje problem? Nie ma "ImageView" wspomnianego w pytaniu ani żadnego znaku tworzenia bitmapy! 'View.buildDrawingCache' tworzy obraz zbyt duży z jakiegoś powodu .... – TWiStErRob

1

Bitmap.createBitmap()

Zgłasza IllegalArgumentException

gdy X, Y, szerokość, wysokość wartości znajduje się poza wymiary bitmapy źródłowego albo szerokość to < = 0 lub wysokość to < = 0

Najpierw zrób su ponownie twoje wartości x, y, width i height są mniejsze niż źródłowa bitmapa.

Problemem dla mnie była matryca. Moja macierz ma wartość translacji, która przyniosła jedną z wartości spoza granic wejściowej mapy bitowej.

Nadzieja to pomaga

0

W moim przypadku to był błąd w tym ciągu:

WebView.getSettings().setUseWideViewPort(true); 

crash tylko na API 18 i mniej

Powiązane problemy