一个Activity有500多个控件,对手机有多大影响

加盾男爵 2020-11-25 09:47:38
一个Activity里面装了个ViewPager,然后总共6个页面,这6个页面总计500+的控件,类似下面这样

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:background="@drawable/ff0819"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="10dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:textAlignment="viewEnd"
android:text="@string/factory_index:"
android:textSize="@dimen/text_size_14" />
<EditText
android:id="@+id/cellInfoArfcnEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_marginStart="2dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="2dp"
android:layout_marginBottom="2dp"
android:background="@drawable/rect_corner"
android:ellipsize="end"
android:inputType="none"
android:lines="1"
android:textColor="#ff555555"
android:textColorHint="#ff999999"
android:textSize="@dimen/text_size_20" />
</LinearLayout>

以小米9为例,启动这样一个Activity对于手机来说
1.和空的Activity几乎没区别
2.会导致手机启动时验证卡顿(要卡好几秒)

PS:我手机启动这个Activity每次都要点几下才能启动,不知道原因时什么?有些担心控件放多了
...全文
23754 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_1113502097 2021-02-24
  • 打赏
  • 举报
回复
一般APP界面控件多的话,目测是很多item,recycleview的缓存,回收了解下。还有Viewpage+Fragment实现懒加载等也可以了解下。 卡几秒多半是你的代码运行要太多时间了,刷新UI太快等原因。
王能 2021-02-23
  • 打赏
  • 举报
回复
700多路过,依然很流畅


    {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                View decorView = getWindow().getDecorView();
                check(decorView);
                System.out.println(count);
            }
        }, 5000);
    }

    int count = 0;

    private void check(View view) {
        count++;
        if (view instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) view;
            for (int i = 0; i < vg.getChildCount(); i++) {
                check(vg.getChildAt(i));
            }
        }
    }
王能 2021-02-23
  • 打赏
  • 举报
回复
虽然500个控件很多,但正常使用绝对不会卡,如果卡那肯定是你在某些地方出现了频繁刷新ui的操作
只为搞笑 2020-12-04
  • 打赏
  • 举报
回复
听你这么说,感觉是类似问卷一类的页面。这类页面记住一个原则,只保存表单数据,控件复用。 > 比如你在加载第一个viewpager时,后面的viewpager就不要立即加载出来。 > 第一个viewpager这么多控件,我猜想也是列表滚动类型的。这时候可以用recyclerview来布局,这样布局可以被重用。 > 表单数据需要时刻保存,在recyclerview渲染时反填数据。这样就可以做到只渲染屏幕内的组件了
ink_s 2020-11-25
  • 打赏
  • 举报
回复
500多个。。。。。
开发者_android 2020-11-25
  • 打赏
  • 举报
回复
去了解一下android view、activity缓存、销毁、内存回收机制。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧