9

即使我離開了應用程序一段時間後,我在我的logcat中有這些警告。 (雖然沒有殺,只是後退離開吧。)Android - 掛起所有線程花費:*毫秒

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在等待請求完成時從緩存中獲取/更新/刪除數據。我不認爲任何這些造成這一點,但。

有關這種情況的任何想法或一般信息,我讚賞,因爲我沒有發現任何具體的「暫停所有線程」警告。

+0

看看您是否在模型中使用了像View這樣的屬性。 – Ahmed

回答

3

看起來好像有一些線程在你的進程中運行,分配臨時對象,ART必須垃圾收集並暫停所有線程。

嘗試追蹤甚至在您離開應用程序後仍可能在後臺運行的內容。您也可以嘗試使用Android Studio中的「分配跟蹤器」來查找正在分配哪個對象 - 也許這會讓您跟蹤雜散線程。

-1

當我將Retrofit響應對象擴展到RealmObject時發生。我刪除了RealmObject以改進響應。這個對我有用。