我有一個BroadcastReceiver類。我有一些聲明它的值在onReceive()方法中更新的靜態變量。根據我的知識,靜態變量將保持onReceive調用的值。有沒有可能,當我將失去這些價值(像我的班將被卸載重置靜態變量)?這些基本上是我需要用於多個onReceive調用的一些臨時變量。BroadcastReceiver生命週期 - 靜態變量
7
A
回答
4
從BroadcastReceiver Lifecycle文檔...
一個BroadcastReceiver對象僅適用於調用的onReceive(上下文,意圖)的持續時間。一旦你的代碼從這個函數返回,系統就認爲該對象已經完成並且不再處於活動狀態。
這並不會使靜態變量的使用變得切實可行,因爲系統會快速清理事物。我會嘗試使用SharedPreferences
致電...
context.getSharedPreferences("MyReceiver", MODE_PRIVATE)
...接收機的onReceive(...)
方法(有一些名字這是有道理的,以您的應用程序替換"MyReceiver"
)。
0
相關問題
- 1. 靜態變量的生命週期
- 2. BroadcastReceiver生命週期
- 3. ASP.NET:應用程序生命週期,靜態變量
- 4. Android靜態對象生命週期
- 5. 靜態生命期
- 6. MarshalByRefObject生命週期
- 7. 靜態類變量的生存期
- 8. 靜態(類)變量的生存期
- 9. .NET中靜態變量的生存期
- 10. ASP.NET靜態變量的生存期
- 11. Android生命週期問題
- 12. System.Timers.Timer生命週期
- 13. viewController生命週期
- 14. Android - 流程生命週期?
- 15. UIControl生命週期
- 16. WP中的靜態對象的生命週期
- 17. 線程引用需要靜態生命週期?
- 18. 類型必須滿足靜態生命週期
- 19. android生命週期onActivityResult vs onStop
- 20. itextsharp和生命週期
- 21. X509Certificates生命週期
- 22. ScheduledExecutorService生命週期?
- 23. C++動態DLL生命週期中的靜態變量。或爲什麼他們死了?
- 24. servlet生命週期
- 25. JSF2.0生命週期
- 26. JVM生命週期?
- 27. PreferenceActivity生命週期
- 28. Eclipse生命週期
- 29. Android活動生命週期
- 30. 靜態私有變量
但靜態變量是類級變量,不應在對象銷燬時清除。如果我錯了,請糾正我。我知道getSharedPreferences(),但只是想使用靜態變量,因爲有些時候我需要在我的工作完成後清除這些變量,並且我不希望它們仍然存在於SharedPreference中。最後,如果它可以通過變量實現,然後我不想使用SharedPreferences。如果它不能那麼肯定我會去SharedPreferences。 – Sush 2011-06-10 05:27:03
@Sush:「但是靜態變量是類級變量,當對象銷燬時不應清理。」 - 那麼當這個類的最後一個實例被銷燬時,'哪裏'類變量'存在'?他們不只是在網絡空間中等待另一個類的實例出現。正如從文檔引用中所解釋的那樣,當'onReceive(...)'退出時,系統認爲該對象被完成。基本上你不能保證是否/什麼時候'BroadcastRecever'對象將被GC'd。至於'SharedPreferences',你可以在不再需要時簡單地'清除'它們。 – Squonk 2011-06-10 15:31:13
@MisterSquonk:我同意SharedPreferences可以完成這項工作。但是我堅決不同意,一旦類的最後一個實例被破壞,靜態變量就會被銷燬。當類被加載到內存時,靜態變量被初始化,當應用程序啓動並停留在內存中直到該類在內存中。它不依賴於對象的生活。 – Sush 2011-06-10 18:23:17