Android在4.3设备上的活动缓慢

Android在4.3设备上的活动缓慢,android,performance,list,imageview,Android,Performance,List,Imageview,我开发了一个应用程序,可以从网络上播放视频。我有一个活动,列出了视频,包括他们的图标、标题和最新更新的状态。对于每一行,都有一个视频缩略图、视频标题,然后是一个新图标,表示这是一个新上传 在emulator中,这工作得相对较好。在2.3和4.0.3 HTC Evo设备中,它工作得非常好。在HTC One 4.3设备上,此活动非常缓慢。单击列表中的一个项目,它会将您带到另一个活动,效果很好。除列表活动外,其他活动都可以 这是我到目前为止所做的实验。我已经从xml中删除了新图标,它工作得很好。所以我

我开发了一个应用程序,可以从网络上播放视频。我有一个活动,列出了视频,包括他们的图标、标题和最新更新的状态。对于每一行,都有一个视频缩略图、视频标题,然后是一个新图标,表示这是一个新上传

在emulator中,这工作得相对较好。在2.3和4.0.3 HTC Evo设备中,它工作得非常好。在HTC One 4.3设备上,此活动非常缓慢。单击列表中的一个项目,它会将您带到另一个活动,效果很好。除列表活动外,其他活动都可以

这是我到目前为止所做的实验。我已经从xml中删除了新图标,它工作得很好。所以我认为这和这个图标有关。图像相当大,为1000x900px,但仅以50x50dp渲染。我还没有试着缩小这张图片来看看它的性能。但如果这是个问题,为什么老款HTC手机可以完美呈现呢

与HTC One和旧款HTC手机的唯一区别在于HTC One有一个操作栏,旧款手机使用设备中的专用菜单键

在设备中运行应用程序时,是否有办法检查内存使用情况或进程,以了解为什么运行速度如此之慢

更新: 我已经将图像大小调整为100x100px,而且速度肯定更快。但我仍然注意到有一些滞后

下面是该列表行的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="2dp"
    android:paddingTop="2dp" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true" />

    <ImageView
        android:id="@+id/status"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_toLeftOf="@id/status"
        android:layout_toRightOf="@id/icon" />
</RelativeLayout>

尝试启动方法分析查看图片,然后启动活动,然后再次点击图片中的相同按钮停止方法分析。Eclipse将生成一个报告,您将在其中看到执行哪个方法需要多少时间。因此,您可以找出导致延迟的方法


尝试启动方法分析查看图片,然后启动活动,然后再次点击图片中的相同按钮停止方法分析。Eclipse将生成一个报告,您将在其中看到执行哪个方法需要多少时间。因此,您可以找出导致延迟的方法


从4.1到4.3或4.2,我注意到HTC one的性能问题。禁用硬件加速实际上提高了使用HTC One时许多页面的性能。您可以尝试在清单中禁用硬件加速,然后在主要活动中为除HTC设备外的所有设备启用它

在启用硬件加速的情况下,其他设备在相同页面上具有出色的性能。只有HTC一家需要以下代码:

如果!android.os.Build.MODEL.equalsIgnoreCaseHTC One&&Integer.parseIntandroid.os.Build.VERSION.SDK==18 { getWindow.setFlagsWindowManager.LayoutParams.FLAG\u硬件加速,WindowManager.LayoutParams.FLAG\u硬件加速;
}

当HTC one从4.1升级到4.3或4.2时,我注意到了性能问题。禁用硬件加速实际上提高了使用HTC One时许多页面的性能。您可以尝试在清单中禁用硬件加速,然后在主要活动中为除HTC设备外的所有设备启用它

在启用硬件加速的情况下,其他设备在相同页面上具有出色的性能。只有HTC一家需要以下代码:

如果!android.os.Build.MODEL.equalsIgnoreCaseHTC One&&Integer.parseIntandroid.os.Build.VERSION.SDK==18 { getWindow.setFlagsWindowManager.LayoutParams.FLAG\u硬件加速,WindowManager.LayoutParams.FLAG\u硬件加速;
}

我尝试了这一点,并比较了HTC One和EVO的报告。对于HTC One,主线程主要用于整个评测过程中的GLES20Canvas.nDrawDisplayList。虽然HTC Evo在报告开始时才有此功能。请查看此帖子:发现问题。不得不禁用硬件加速。我尝试了这个,并比较了HTC One和EVO的报告。对于HTC One,主线程主要用于整个评测过程中的GLES20Canvas.nDrawDisplayList。虽然HTC Evo在报告开始时才有此功能。请查看此帖子:发现问题。必须禁用硬件加速。