Appwidget ID但没有小部件

时间:2011-07-07 13:21:26

标签: android alarm android-appwidget

我正在为我的应用程序创建一些appwidgets;其中一个是包含时钟的小部件,每60秒需要更新一次。因此,我在AppWidgetProvider的onEnabled()函数中创建一个警报,它每60秒发送一次时钟更新意图,由appwidgetprovider接收;这就像一个魅力,但是当没有更多的时钟小部件时我喜欢摆脱计时器,因为我喜欢保持整洁。因此,我删除了AppWidgetProvider的onDisabled()函数中的警报,因为在删除最后一个窗口小部件类型时会调用该警报。

然而问题是,即使我删除了最后一个小部件,appwidgetmanager中仍然存在widgetIds,因此永远不会调用onDisabled()。我尝试重新启动设备,但它们似乎仍然存在。

这是常见的行为吗?我不应该依赖onDisabled()被调用,这是一个错误,还是我做了一件非常错误的事情?

1 个答案:

答案 0 :(得分:1)

无法添加到主屏幕的Android 1.6小部件仍然在列表中。我把它们称为“幽灵小部件”。当您尝试添加小部件但是没有足够的空间时,它们会被创建,您将收到有关该消息的消息。但是小部件仍以某种方式进入内部列表。我认为应该用2.0修复,但我不确定。

除此之外,仅使用 onEnabled和onDisabled是一个非常糟糕的想法。即使屏幕关闭,您的小部件也会继续更新。您的设备永远不会真正睡眠,电池会耗尽太快。至少添加一个Receiver for ScreenOn和ScreenOff!