我正在编写一个 Android 小部件。我有扩展 AppWidgetProvider 的 MyAppWidgetProvider。
在小部件的生命周期中,它会调用各种回调:onUpdate、onEnabled、onDisabled 等。它们由操作 ACTION_APPWIDGET_UPDATE、ACTION_APPWIDGET_ENABLED 等触发。
根据App Widget Guide , “[onDisabled] 是您应该清理在 onEnabled 中完成的所有工作的地方”。我将其解释为意味着 onEnabled 可能会在 MyAppWidgetProvider 中设置一些实例状态,而 onDisabled 应该将其拆除。但是,我发现会为每个操作创建一个新的 MyAppWidgetProvider 实例。
那么,这是预期的行为吗?我应该总是期望为每个回调创建一个新实例,还是有某种方法可以配置广播接收器或发送器以使用现有实例?如果总是创建一个新实例,那么将任何实例状态存储在 MyAppWidgetProvider 中都是不安全的,文档中并不清楚这一点。
最佳答案
是的,您不能希望回收 BroadcastReceiver 的单个实例。
A BroadcastReceiver object is only valid for the duration of the call to
onReceive(Context, Intent). Once your code returns from this function, the system
considers the object to be finished and no longer active.
随着 AppWidgetProvider 扩展 BroadcastReceiver,您得到了答案。 :)
关于android - 为收到的每个广播创建一个新的 MyAppWidgetProvider 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746006/