我有一个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