material-components-android icon indicating copy to clipboard operation
material-components-android copied to clipboard

[MaterialDatePicker + MaterialTimePicker] (Maybe others as well) slow load time

Open chennemann opened this issue 4 years ago • 8 comments

Description:

I want to use those components in my app but I notice some really unusual loading speed for the initial load after the app is cold started. It takes up to three seconds for the pickers to show up after they are requested.

ezgif-1-496c20434c9e

That behaviour happens when I start the application from Android Studio on my phone or in the emulator. When I use the Sample App for the Material Components from the PlayStore it's behaving normally (so no opening delay). I'm actually kinda clueless what the reasoning might be.

Consecutive clicks are faster.

Expected behavior:

The Pickers should show up nearly instantaneously.

Source code:

This screencapture is from a minimal application that consists just of one Activity:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<Button>(R.id.datePicker).setOnClickListener {
            MaterialDatePicker.Builder.datePicker().build().show(supportFragmentManager, "DATE_PICKER")
        }

        findViewById<Button>(R.id.timePicker).setOnClickListener {
            MaterialTimePicker.Builder().build().show(supportFragmentManager, "DATE_PICKER")
        }
    }
}

The layout just contains the two buttons:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open Date Picker"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.33" />

    <Button
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Open Time Picker"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/datePicker" />

</androidx.constraintlayout.widget.ConstraintLayout>

Android API version: 10

Material Library version: 1.3.0-alpha04

Device: OnePlus 6T & Emulator in Android Studio

chennemann avatar Nov 30 '20 23:11 chennemann

@chennemann do you know if this latency has been fixed?

YMonnier avatar Apr 26 '21 11:04 YMonnier

I built the catalog module in debug mode and noticed there was a delay as well.

https://user-images.githubusercontent.com/47814970/188934944-0657ddc6-cdc7-4987-8fae-f28757a11f9f.mp4

When I use the app from the play store, it is much quicker. Furthermore, when displaying a date picker in my app, it displays much quicker in release than in debug. Is there some block of code in the material library that only runs in debug and is adding a considerable overhead?

pedro-mgb avatar Sep 07 '22 16:09 pedro-mgb

For people landing here, you need to test with release config because the debug's one is very slow

LaurentLixfe avatar Jan 02 '23 11:01 LaurentLixfe

is there any update to this?

DikenMaharjan avatar Nov 09 '23 04:11 DikenMaharjan

too much lag while opening RangePicker.

nikunjparadva avatar Nov 21 '23 10:11 nikunjparadva

I also want to give a feedback, as @LaurentLixfe mentioned, when you build your app in Release configuration, all components run much faster, fast enough as they should. Please try to test in release, for performance tests.

onurerden avatar May 08 '24 13:05 onurerden

Yes Thanks @onurerden for your feedback, It was working perfectly in Release but it takes too much freez in Debug version @dsn5ft @leticiarossi Please take a look over the issue which is happening in debug version.

nikunjparadva avatar May 09 '24 05:05 nikunjparadva

For people landing here, you need to test with release config because the debug's one is very slow

Thanks!, it really works fine on release version but is extrememly laggy in debug, I was using material date range picker, every time I scroll it would freeze for like a second or more depending on the phone I tested. I think the problem of laggy scrolling in debug version may be realted to this issue.

CyberButton avatar Jun 17 '24 15:06 CyberButton