Android - 暂停所有线程:* ms

时间:2016-05-03 11:13:55

标签: android multithreading 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

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

我看到了一些关于这个问题的问题,并且没有一个与我的相似,我不能接受“忽略它,除非你没有OOM或冻结问题”,如果这可能导致,我不能等到它发生做点什么吧。

我只需要知道导致这种情况的原因以及如何防止这种情况发生。

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

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

2 个答案:

答案 0 :(得分:4)

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

尝试跟踪即使在您离开应用后仍可在后台运行的内容。您也可以尝试使用"分配跟踪器"在Android Studio中查找正在分配的对象 - 也许这会让你跟踪流线程。

答案 1 :(得分:-1)

当我将Retrofit响应对象扩展到RealmObject时会发生这种情况。我删除RealmObject以改进响应。它对我有用。