BroadcastReceiver生命周期 - 静态变量

Sus*_*ush 8 android garbage-collection static-variables broadcastreceiver

我有一个BroadcastReceiver类.我声明了一些静态变量,其值在onReceive()方法中更新.根据我的知识,静态变量将保持它在onReceive调用中的值.有没有可能我会松开这些值(就像我的类将被卸载重置静态变量)?这些基本上是我需要为多个onReceive调用提供的一些临时变量.

Squ*_*onk 5

BroadcastReceiver生命周期文档中...

BroadcastReceiver对象仅在对onReceive(Context,Intent)的调用期间有效。一旦您的代码从该函数返回,系统将认为该对象已完成并且不再处于活动状态。

从系统可以快速清除事物的意义上讲,这不会使静态变量的使用变得切实可行。我会尝试SharedPreferences通过致电...

context.getSharedPreferences("MyReceiver", MODE_PRIVATE)

...以接收方的onReceive(...)方法(用"MyReceiver"对您的应用有意义的名称替换)。

  • @MisterSquonk:我同意SharedPreferences可以完成这项工作。但我强烈不同意,一旦销毁了类的最后一个实例,静态变量将被销毁。当将类加载到内存中时(即,应用程序启动并停留在内存中直到该类在内存中时),将初始化静态变量。它不依赖于生存的对象。 (3认同)
  • @Sush:好的,一旦类的最后一个实例被销毁,约定的WRT静态变量就不会被销毁,我的措辞很差。我会重新说说-一旦BroadcastReceiver退出onReceive()并可能经过GC处理,如果它是整个应用程序的最后一个活动组件,则应用程序本身可能成为Android的目标的危险增加了如果设备资源不足,操作系统将终止。如果发生这种情况,那么您将丢失当前值,因为下次“发射”接收器时,将重新创建/重新初始化应用程序。但是SharedPreferences仍然存在。 (3认同)