【发布时间】:2012-02-03 11:37:18
【问题描述】:
我正在编写一个 Android 小部件。我有 MyAppWidgetProvider,它扩展了 AppWidgetProvider。
在小部件的生命周期中,它会调用各种回调:onUpdate、onEnabled、onDisabled 等。它们由操作 ACTION_APPWIDGET_UPDATE、ACTION_APPWIDGET_ENABLED 等触发。
根据App Widget Guide,“[onDisabled] 是您应该清理在 onEnabled 中完成的任何工作的地方”。我解释这意味着 onEnabled 可能会在 MyAppWidgetProvider 中设置一些实例状态,并且 onDisabled 应该将其拆除。但是,我发现为每个操作都创建了一个新的 MyAppWidgetProvider 实例。
那么,这是预期的行为吗?我是否应该总是期望为每个回调创建一个新实例,或者是否有某种方法可以配置广播接收器或发送器以使用现有实例?如果总是创建一个新实例,那么在 MyAppWidgetProvider 中存储任何实例状态都是不安全的,这在文档中并不清楚。
【问题讨论】:
标签: android android-widget broadcastreceiver android-appwidget