ColorPickerView icon indicating copy to clipboard operation
ColorPickerView copied to clipboard

OutOfMemoryError issue

Open Japskiddin opened this issue 4 years ago • 2 comments

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)

Japskiddin avatar Jul 11 '21 16:07 Japskiddin

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.

skydoves avatar Jul 12 '21 07:07 skydoves

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>`

Japskiddin avatar Jul 13 '21 18:07 Japskiddin