2013-04-23 63 views
0

我做了這個部分將R & d,也沒有能夠找到答案這個問題關於當前狀態保存時調用垃圾收集

如果後臺活動是GC通過Android系統,如何在GC真的發生之前保存當前狀態 ?

問候 因德爾bagga

+0

我認爲GC的重點是您並不需要擔心它:) – 2013-04-23 09:58:59

回答

2

如果您的應用程序中有任何內容正在垃圾收集,它將已經通過onStop()onDestroy()方法。有沒有辦法救它只是這是GCD

如果你想存儲狀態之前,最好做在其中的一個 - 儘管這樣做絕對最安全的地方是onPause(),如onStop()onDestroy()都是可以殺死的進程,這意味着這些方法可能沒有完全執行 - 請參閱Activity lifecycles的Android文檔

2

由於Java GC不提供任何回調機制,或前或運行後的任何掛鉤,這將是不可能的只是GC之前做一些活動。

雖然說的監測目的,你可以嘗試捕獲當前狀態的固定時間間隔,來決定你可能要驗證如何在應用程序GC是發生在這個時間間隔:

jstat -gcutil -t -h5 <pid> 500 5 

這會給你輸出類似:

Timestamp   S0  S1  E  O  P  YGC  YGCT FGC FGCT  GCT 

     3995.4 0.00 0.00 5.15 0.26 56.95  6 0.019  2 0.057 0.076 

     4000.4 0.00 0.00 5.15 0.26 56.95  6 0.019  2 0.057 0.076 

其中YGCT是未成年人米利斯週期時間,這將給你的應用GC統計的總體思路說小循環發生在每一個19秒,在此基礎上你可能會調整的時候要保存當前狀態