Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-应用程序可能在其主线程上做了太多工作_Java_Android_Xml_Adt - Fatal编程技术网

Java Android-应用程序可能在其主线程上做了太多工作

Java Android-应用程序可能在其主线程上做了太多工作,java,android,xml,adt,Java,Android,Xml,Adt,我是Android的新手,我在ADT的一个非常简单的例子中遇到了问题,我在一个框架布局中只有两个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 wor

我是Android的新手,我在ADT的一个非常简单的例子中遇到了问题,我在一个框架布局中只有两个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

    <?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>

我必须提到,如果我评论两个框架布局中的一个,问题就不存在了。提前谢谢


编辑:我也将这两幅图像放在Drawable文件夹中(我不知道这是否会影响),但我在教程中看到,我必须将图像放在Drawable文件夹的子文件夹中(mdpi、hdpi、xhdpi、xxhdpi)问题是此子文件夹不存在,因此我将图像粘贴到绘图表中。

好的,可能发生的情况是操作系统正在尝试对您的图像进行大量处理,您可能选择了高分辨率。您可以尝试创建图像的多分辨率(mdpi、hdpi、xhdpi、xxhdpi)。对于hdpi、xhdpi、xxhdpi,您可以将图像的标准大小作为mdpi,并分别以1.5、2、3的比例增加它们的大小。当您有这些图像时,如果您没有让它们自己创建,请将它们放在可绘制文件夹中。有时这甚至会导致android中出现OOM。有一篇文章提到了这一点。

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

您应该检查文档中的
AsyncTask
Thread

还有一个非常解释性的指南


发生的情况是,您在主线程中执行了大量cpu消耗进程,这可能会导致主UI线程挂起。解决方法是在一个辅助线程中执行整个图像处理,并仅为UI交互保留主线程。

您应该查看文档中的
AsyncTask
thread

还有一个非常解释性的指南



发生的情况是,您在主线程中执行了大量cpu消耗进程,这可能会导致主UI线程挂起。解决方法是在一个辅助线程中完成整个图像处理,并将主线程仅用于UI交互。

您的图像可能很大?您可以为放置图像创建一个文件夹drawable nodpi。使用异步任务和线程会有所帮助。如果所需的可绘制文件夹还不存在,就制作它们。@JoseAngelManeiro我的图像是1024x768 png,大小是1.40M,你认为它是应用程序的大图像吗?建议的分辨率和大小应该是多少?@FrankN.Stein如果我创建了这些文件夹并将图像放在那里,我在XML中的android:src=“@drawable/home1”行中出现了一个错误,但这确实是你必须做的:如果缺少,就创建它们。1024x768将在内存中占用1024*768*4=3145728字节。4是R、G、B和A。你的图像可能很大?您可以为放置图像创建一个文件夹drawable nodpi。使用异步任务和线程会有所帮助。如果所需的可绘制文件夹还不存在,就制作它们。@JoseAngelManeiro我的图像是1024x768 png,大小是1.40M,你认为它是应用程序的大图像吗?建议的分辨率和大小应该是多少?@FrankN.Stein如果我创建了这些文件夹并将图像放在那里,我在XML中的android:src=“@drawable/home1”行中出现了一个错误,但这确实是你必须做的:如果缺少,就创建它们。1024x768将在内存中占用1024*768*4=3145728字节。4是R、G、B和A。是的,我看到了一些关于hdpi、xhdpi、xxhdpi的东西,但这些文件夹并不存在。我应该在“Drawable”文件夹中创建这些文件夹吗?是的,创建像Drawable mdpi、Drawable hdpi、Drawable xhdpi、Drawable XXHDP这样的文件夹。我遇到了下一个错误:“无法解析resource@Drawable/home2”我将图像放在Drawable mdpi中。你在其他文件夹中也有不同分辨率的图像吗?好的,谢谢,问题解决了,我把不同分辨率的图像放在其他文件夹中,并将可绘制的hdpi(和其他)移动到res/中,因此,我必须创建您在res/中告诉我的文件夹,没有res/drawable/,谢谢。是的,我看到了一些关于hdpi、xhdpi、xxhdpi的内容。问题是这些文件夹不存在。我应该在“Drawable”文件夹中创建这些文件夹吗?是的,创建像Drawable mdpi、Drawable hdpi、Drawable xhdpi、Drawable XXHDP这样的文件夹。我遇到了下一个错误:“无法解析resource@Drawable/home2”我将图像放在Drawable mdpi中。你在其他文件夹中也有不同分辨率的图像吗?好的,谢谢,问题解决了,我将不同分辨率的图像放在其他文件夹中,并将可绘制hdpi(和其他)移动到res/中,因此,我必须创建您在res/中告诉我的文件夹,而不是res/drawable/,谢谢。好的,我看一下,这可能是一个解决方案,为图像处理创建一个线程,但我如何才能做到这一点?我为测试it所做的事情是创建一个线程来执行下一句话:setContentView(R.layout.activity_main);在MainActivity中的OnCreate()方法中,但当我在手机中测试它时,它会抛出force close。使图像进行处理的语句是什么?工作线程不应接触主UI,因此不能在工作线程中设置ContentView。AsyncTask的实现是重写doInBackground()方法,在该方法中,您将把所有图像处理过程放在