Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 即使使用异步任务,主线程中也存在性能问题_Java_Android_Multithreading_Performance_Android Asynctask - Fatal编程技术网

Java 即使使用异步任务,主线程中也存在性能问题

Java 即使使用异步任务,主线程中也存在性能问题,java,android,multithreading,performance,android-asynctask,Java,Android,Multithreading,Performance,Android Asynctask,我的主线程的性能似乎很差。活动之间的转换会导致重大延迟。我已经将所有的Web/Bitmap/File工作推到了异步任务中,但这种情况仍然在发生。我一直在绞尽脑汁试图找出是什么导致了减速 我的问题是-如果主线程使用一个类(比如ImageDownloader)来创建自己的小异步任务(比如ImageDownloadeTask),Main会等待ImageDownloader完成它的异步任务吗(因此会延迟?) 我很想发布代码,但这是一个非常大的项目。如果有什么我需要查找的特定内容,请让我知道,我一定会与您

我的主线程的性能似乎很差。活动之间的转换会导致重大延迟。我已经将所有的Web/Bitmap/File工作推到了异步任务中,但这种情况仍然在发生。我一直在绞尽脑汁试图找出是什么导致了减速

我的问题是-如果主线程使用一个类(比如ImageDownloader)来创建自己的小异步任务(比如ImageDownloadeTask),Main会等待ImageDownloader完成它的异步任务吗(因此会延迟?)


我很想发布代码,但这是一个非常大的项目。如果有什么我需要查找的特定内容,请让我知道,我一定会与您分享。

如果您还没有这样做,我建议您以这种方式启用并查找主线程上的活动。

检查您的onCreate和onResumes,查看任何可能运行超过一瞬间的内容。这包括网络调用、数据库调用、可能需要大量迭代的循环,甚至从本地存储的文件(从xml读取的SharedReference)中读取。还要试着对onCreate执行setContentView方法的时间进行基准测试——我相信嵌套的LinearLayouts会对性能造成重大影响,特别是在复杂的UI结构中。使用LocationProvider获取位置时,如果操作不当,也会导致严重的性能问题


您可能认为可以在异步任务上传递长时间运行的线程,但您还需要检查,在启动这些任务之前,启动这些任务所需的数据可能需要一段时间才能获取。

假设您从活动a转换到活动B。请注释活动B中onCreate()和onResume()的所有代码并进行测试。如果一切正常,开始取消注释代码位,直到缩小性能问题的范围。如果注释所有代码都没有任何帮助,至少我们知道问题不在活动B中。啊!我不知道这件事。它肯定是从我正在做的web&local中获取了一些读/写信息。谢谢你!