Android - 应用程序可能在其主线程

时间:2015-12-16 15:24:12

标签: java android xml adt

我使用Android进行新编程,我在ADT中遇到一个非常简单的示例问题,我在每个FrameLayout中只有2个ImageView,但是当我用手机测试它时,应用程序在它没有的时候变得很慢任何逻辑原因我没有碰到java文件夹。

这是我遇到的错误

12-16 16:17:43.261 18238-18238/com.example.brank.acocinapp I/Choreographer: Skipped 64 frames!  The application may be doing too much work on its main thread.
12-16 16:17:44.781 18238-18248/com.example.brank.acocinapp W/art: Suspending all threads took: 26.044ms
12-16 16:17:44.831 18238-18238/com.example.brank.acocinapp W/PathParser: Points are too far apart 4.000000596046461

这是我的content_main.xml的

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.brank.acocinapp.MainActivity">

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/frameLayout2"
        android:layout_alignParentBottom="true">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageView3"
            android:adjustViewBounds="true"
            android:src="@drawable/home2" />
    </FrameLayout>


    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/frameLayout"
        android:layout_alignParentTop="true">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageView2"
            android:src="@drawable/home1"
            android:adjustViewBounds="true"/>

    </FrameLayout>


</RelativeLayout>

我必须提一下,如果我评论两个FrameLayout中的一个,问题就不存在了。提前谢谢。

编辑:我还将2个图像放在Drawable文件夹中(我不知道这是否会影响)但我在教程中看到我必须将图像放在Drawable的子文件夹中(mdpi) ,hdpi,xhdpi,xxhdpi)问题是这个子文件夹不存在所以我将我的图像粘贴到Drawable中。

2 个答案:

答案 0 :(得分:3)

好的可能会发生的是,操作系统正在尝试对您的图像进行大量处理,您可能选择了高分辨率。您可以做的是尝试创建图像的多个分辨率(mdpi,hdpi,xhdpi,xxhdpi)。你可以将图像的标准尺寸作为mdpi,并分别以1.5,2,3的比例增加它们的尺寸,用于hdpi,xhdpi,xxhdpi。当你将这些图像放入可绘制的文件夹中时,如果你不让它们自己创建它们。有时这甚至可能导致Android中的OOM。一篇文章explaining

答案 1 :(得分:0)

您应该查看AsyncTaskThread的文档 Main Threads and Worker Threads

还有一个非常具有说明性的指南

发生的事情是你在主线程中执行了很多消耗cpu的进程,这可能会导致主UI线程挂起。解决方案是在工作线程中执行整个图像处理,并保持主线程仅用于UI交互。