Android - 暂停所有线程:*ms

yah*_*hya 10 multithreading android threadpoolexecutor android-runtime

我离开应用程序一段时间后,我的logcat中出现了这些警告.(虽然没有杀死,只是按回来离开它.)

05-03 13:43:42.955 13047-13053/package W/art: Suspending all threads took: 7.873ms
05-03 13:44:32.458 13047-13053/package W/art: Suspending all threads took: 13.441ms
05-03 13:46:58.584 13047-13053/package W/art: Suspending all threads took: 34.462ms
05-03 13:47:00.574 13047-13053/package W/art: Suspending all threads took: 8.281ms
05-03 13:48:00.425 13047-13053/package W/art: Suspending all threads took: 25.929ms
05-03 13:48:16.019 13047-13053/package W/art: Suspending all threads took: 35.053ms
05-03 13:50:01.858 13047-13053/package W/art: Suspending all threads took: 16.160ms
05-03 13:50:17.975 13047-13053/package W/art: Suspending all threads took: 20.074ms
05-03 13:52:07.744 13047-13053/package W/art: Suspending all threads took: 19.814ms
05-03 13:53:17.668 13047-13053/package W/art: Suspending all threads took: 7.578ms
05-03 13:54:42.766 13047-13053/package W/art: Suspending all threads took: 11.316ms
05-03 13:56:19.314 13047-13053/package W/art: Suspending all threads took: 21.873ms
05-03 13:58:56.140 13047-13053/package W/art: Suspending all threads took: 7.860ms
05-03 14:00:12.084 13047-13053/package W/art: Suspending all threads took: 19.430ms
Run Code Online (Sandbox Code Playgroud)

这些数字很严重而且很多.

我看到了一些关于这个问题的问题,并且没有一个与我的相似,我不能接受"忽略它,除非你没有OOM或冻结问题",如果这可能导致,我不能等到它碰巧做了一些事情它.

我只需要知道是什么导致这种情况,我该如何防止这种情况发生.

我使用Retrofit来完成我的web服务请求.还有一个ThreadPoolExecutor在等待请求完成时从缓存中获取/更新/删除数据.我不认为这些导致这一点.

关于这种情况的任何想法或一般信息都是值得赞赏的,因为我发现没有具体的关于这个"暂停所有线程"的警告.

Mar*_*ski 4

看起来您的进程中正在运行一些线程,分配临时对象,ART 必须对其进行垃圾收集并挂起所有线程来执行此操作。

即使在您离开应用程序后,尝试跟踪仍在后台运行的内容。您还可以尝试使用 Android Studio 中的“分配跟踪器”来查找正在分配的对象 - 也许这会让您跟踪杂散线程。