当前位置: 首页 > 知识库问答 >
问题:

识别Android操作系统导致的应用程序缓慢

孔扬
2023-03-14

如何检查应用程序运行缓慢的原因?更准确地说,哪种生命周期方法在Android中执行需要更多时间。

我已经尝试记录每个活动和片段的生命周期方法,但我无法找出延迟的原因。调用了onCreate,但在调用onResume之前有相当长的延迟(大约1s)。

由于上述延迟,用户感觉应用程序的响应性不强。

对于高端手机,延迟降低到大约100毫秒。但是旧的2012-2011型号有这个巨大的延迟。

关于如何进一步调查以确定延迟的根本原因,以及我们如何优化应用程序以更快地浏览屏幕的一些想法。

提前谢谢。

共有1个答案

艾鹭洋
2023-03-14

如果您在主线程中处理大量数据(包括复杂的UI渲染),那么您可以在logcat中找到这种消息:

W/Trace(1274): Unexpected value from nativeGetEnabledTags: 0
 I/Choreographer(1274): Skipped 55 frames!  The application may be doing too much work on its main thread. 

这可能会导致应用程序在呈现UI时速度减慢

可建议的修复

解决此问题需要识别存在或可能发生长时间处理的节点。最好的方法是在独立于主UI线程的线程中执行所有处理,无论大小。因此,无论是访问数据表单SQLite数据库还是进行一些核心数学或简单地对数组进行排序-在不同的线程中执行

现在这里有一个陷阱,您将创建一个新线程来执行这些操作,当您运行应用程序时,它会崩溃,说“只有创建视图层次结构的原始线程才能接触其视图“。你需要知道这样一个事实,android中的UI只能由主线程或UI线程更改。任何其他尝试这样做的线程都会失败并崩溃,并出现此错误。你需要做的是在RunUnuithRead中创建一个新的可运行的。在这个可运行的线程中,你应该执行与UI相关的所有操作。在这里找到一个示例

所以我们有线程和可运行线程来处理主线程之外的数据,还有什么?android中有AsyncTask,可以在UI线程上执行长时间进程。当您的应用程序是数据驱动的或web api驱动的,或使用复杂的UI(如使用Canvas构建的应用程序)时,这是最有用的。异步任务(AsyncTask)的功能是允许在后台做事情,一旦完成处理,就可以在UI上简单地执行所需的操作,而不会造成任何滞后影响。这是可能的,因为AsyncTask本身来自Activity的UI线程–您通过AsyncTask在UI上执行的所有操作都是在与主UI线程不同的线程中完成的,不妨碍用户交互。

这就是制作流畅的android应用程序所需要知道的,据我所知,每个初学者都会在他的控制台上收到这条信息。

 类似资料:
  • 本文向大家介绍操作系统中缓冲与缓存之间的区别,包括了操作系统中缓冲与缓存之间的区别的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们将了解操作系统中缓冲和缓存之间的区别- 正在缓冲 它是主内存中的一个区域。 这意味着它与RAM(随机存取存储器)相关联。 缓冲区将数据的原始副本存储在内存中。 缓冲与发送方和接收方之间的数据流速度匹配。 快取 缓存将数据的原始副本存储在内存中。 缓存可以提高

  • 昨天我启动了一个Android Things项目,我正在使用Android Studio测试该应用程序。以便使用

  • 在我的应用程序中,我得到了android。操作系统。NetworkOnMainThreadException。我正在尝试从url获取图像,当时我遇到了这个异常。若我在2.2中运行应用程序,它可以正常工作,但若我在4.0中运行,就会出现异常。 我有错误 在这一行请帮我解决这个问题 我使用了AsyncTask 我在这行中遇到了错误: Logcat:

  • 我必须开发一个支持视窗、苹果操作系统和Chrome操作系统的应用程序——至少。Chrome操作系统是一个重要的要求,因为这个应用程序旨在学校使用——Chromebook是一种一件大事。正如你可能知道的,Chrome应用程序在Windows、MacOS和Linux上被弃用,所以我们有两个基于网络的“本地”应用程序的选择:电子和NW. js。 由于我是从头开始开发这个应用程序的,并且没有转换任何现有的

  • 主要内容:前提条件,面向读者,问题反馈本操作系统教程提供了操作系统的基本和高级概念。我们的操作系统教程是面向初学者,专业人士等来设计的。在完成对每个概念的深入研究之后,编写了本教程。 内容详细描述,并有能力回答您想要了解的大部分内容和问题。该教程还包含基于问题的一些示例,这些问题将帮助您以实际的方式解决问题。 操作系统可以被定义为用户和硬件之间的接口。它为用户提供了一个环境,使用户可以方便快捷地完成任务。 操作系统教程根据其功能(如进

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成