ColorPickerView
ColorPickerView copied to clipboard
OutOfMemoryError issue
Please complete the following information:
- Library Version 2.2.3
- Affected Devices: Galaxy Grand Neo, Galaxy Tab3, ZenFone 5, Galaxy S3, Galaxy Note2
Describe the Bug:
We are getting OutOfMemoryError from users in our application. Application is crushing in ColorPickerView.java:218, but it is not known at what point this happens, possibly on change screen rotation or showing/hiding color picker panel.
Here full stacktrace:
java.lang.OutOfMemoryError: Failed to allocate a 3240012 byte allocation with 1768520 free bytes and 1727KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.Bitmap.nativeCreate(Native Method) at android.graphics.Bitmap.createBitmap(Bitmap.java:977) at android.graphics.Bitmap.createBitmap(Bitmap.java:948) at android.graphics.Bitmap.createBitmap(Bitmap.java:915) at com.skydoves.colorpickerview.ColorPickerView.onSizeChanged(ColorPickerView.java:218) at android.view.View.sizeChange(View.java:19011) at android.view.View.setFrame(View.java:18954) at android.view.View.layout(View.java:18867) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585) at android.widget.LinearLayout.onLayout(LinearLayout.java:1494) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.widget.ScrollView.onLayout(ScrollView.java:2534) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at androidx.appcompat.widget.AlertDialogLayout.setChildFrame(AlertDialogLayout.java:348) at androidx.appcompat.widget.AlertDialogLayout.onLayout(AlertDialogLayout.java:341) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585) at android.widget.LinearLayout.onLayout(LinearLayout.java:1494) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:910) at android.view.View.layout(View.java:18874) at android.view.ViewGroup.layout(ViewGroup.java:5954) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2697) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2413) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1550) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7190) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959) at android.view.Choreographer.doCallbacks(Choreographer.java:734) at android.view.Choreographer.doFrame(Choreographer.java:670) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Hi, which image do you use for the palette? I think the file size of the palette is too large for allocating memory to your device.
I'm using default image without any changes
` <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="4dp" android:id="@+id/include_palette" android:visibility="gone" >
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center" android:gravity="center" >
<com.skydoves.colorpickerview.ColorPickerView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/color_picker"
/>
<com.skydoves.colorpickerview.sliders.BrightnessSlideBar
android:id="@+id/brightness_slide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:selector_BrightnessSlider="@drawable/wheel"
app:borderColor_BrightnessSlider="@android:color/darker_gray"
app:borderSize_BrightnessSlider="5"
/>
<com.skydoves.colorpickerview.sliders.AlphaSlideBar
android:id="@+id/alpha_slide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:selector_AlphaSlideBar="@drawable/wheel"
app:borderColor_AlphaSlideBar="@android:color/darker_gray"
app:borderSize_AlphaSlideBar="5"
/>
<ImageView android:layout_width="36dp" android:layout_height="36dp" android:id="@+id/iv_palette_close" android:contentDescription="@string/close" android:layout_gravity="end" android:src="@drawable/menu_cancel" />
</FrameLayout>`