Emulator run slowly when come to a specific layout

2019-08-13 01:23发布

问题:

I don't know what's wrong with my xml layout. Everytime when it intent to AddMoreClaims activity, my emulator will run slowly and sometimes not responding as image shown below.

And this are the logCat message

12-09 05:05:59.758    2688-2688/? E/RichInputConnection﹕ Unable to connect to the editor to retrieve text.
12-09 05:05:59.758    2688-2688/? W/RichInputConnection﹕ Unable to connect to the editor. Setting caps mode without knowing text.
12-09 05:05:59.760    2688-2688/? I/Choreographer﹕ Skipped 352 frames!  The application may be doing too much work on its main thread.
12-09 05:05:59.783    2688-2710/? W/EGL_emulation﹕ eglSurfaceAttrib not implemented
12-09 05:05:59.784    2688-2710/? W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa30bfe80, error=EGL_SUCCESS
12-09 05:06:03.080    2808-2808/? I/Choreographer﹕ Skipped 153 frames!  The application may be doing too much work on its main thread.
12-09 05:06:08.163    2808-2808/? I/Choreographer﹕ Skipped 151 frames!  The application may be doing too much work on its main thread.
12-09 05:06:10.863    2808-2808/? I/Choreographer﹕ Skipped 161 frames!  The application may be doing too much work on its main thread.

xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:fillViewport="true"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/dark_blue"
        android:weightSum="1">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Enter Claims Information"
            android:id="@+id/textViewClaims"
            android:paddingTop="30sp"
            android:textSize="20dp"
            android:paddingLeft="15sp"
            android:textColor="@color/white"
            android:layout_weight="0.05" />

        <View
            android:layout_marginLeft="10dp"
            android:layout_width="340sp"
            android:layout_height="2dp"
            android:background="#c0c0c0"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Claims Type : "
            android:paddingTop="20sp"
            android:paddingLeft="15sp"
            android:textSize="17dp"
            android:textColor="@color/white"
            android:id="@+id/textViewClaimsType"
            android:layout_weight="0.05" />

        <Spinner
            android:layout_width="308dp"
            android:layout_marginLeft="10dp"
            android:background="@color/light_gray"
            android:layout_height="48dp"
            android:id="@+id/spinner" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Claims Amount :"
            android:paddingTop="20sp"
            android:paddingLeft="15sp"
            android:textSize="17dp"
            android:textColor="@color/white"
            android:id="@+id/textViewAmount"
            android:layout_weight="0.05" />

        <EditText
            android:layout_width="308dp"
            android:layout_height="wrap_content"
            android:layout_margin="10sp"
            android:background="@drawable/round_corner_square"
            android:id="@+id/editTextAmount"
            android:paddingLeft="20dp"
            android:layout_weight="0.09" />


            <ImageView
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:layout_marginTop="20dp"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:id="@+id/imageView" />


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add picture"
            android:id="@+id/button"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.05" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Enter Description"
            android:paddingTop="30sp"
            android:paddingLeft="15sp"
            android:textSize="17dp"
            android:textColor="@color/white"
            android:id="@+id/textView12"
            android:layout_weight="0.05" />

        <EditText
            android:layout_width="308dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/round_corner_square"
            android:layout_weight="0.12"
            android:paddingLeft="20dp"
            android:paddingBottom="80dp"
            android:layout_x="14dp"
            android:layout_y="146dp"
            android:id="@+id/textDescription" />

        <Button
            android:layout_width="159dp"
            android:layout_height="wrap_content"
            android:text="save"
            android:layout_marginTop="20dp"
            android:id="@+id/button1"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.05" />


    </LinearLayout>
</ScrollView>

Why would this happen and how can I solve it ? Thanks

回答1:

 The application may be doing too much work on its main thread.

Layouts are a key part of Android applications that directly affect the user experience. If implemented poorly, your layout can lead to a memory hungry application with slow UIs. The Android SDK includes tools to help you identify problems in your layout performance, which when combined the lessons here, you will be able to implement smooth scrolling interfaces with a minimum memory footprint.

Loading Views On Demand

Beyond simply including one layout component within another layout, you might want to make the included layout visible only when it's needed, sometime after the activity is running. This lesson shows how you can improve your layout's initialization performance by loading portions of your layout on demand.

Wrong Concept

 <ImageView
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:layout_marginTop="20dp"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:id="@+id/imageView" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add picture"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal"
        android:layout_weight="0.05" />

In here you are using android:layout_weight, Well .Then another case you set Hard coded height & Width ,That's why have problem . Avoid Hard coded Value .