我希望我的小部件在重新启动手机后立即显示其最后的数据(图像和文本)。重新启动后,我的小部件的 AppWidgetProvider.onUpdate()
被调用,我在那里成功更新了它。但是,在实际调用 onUpdate()
之前可能需要很长时间。重新启动后,首先出现主屏幕,我的小部件会显示其默认布局长达 30 秒。最后 onUpdate()
被调用,小部件自行更新。我还尝试听取 BOOT_COMPLETED
Intent ,但在小部件收到它之前需要同样长的时间。
AccuWeather 小部件是如何做到的?主屏幕一出现,AccuWeather 就会立即显示其最新内容。它在恢复之前没有很长的初始延迟。有没有办法将数据动态保存到布局中,以便在启动时立即获取?
编辑:我确定我提到的 AccuWeather 小部件实际上是三星手机中包含的东西。它可能与操作系统 Hook 以便提前加载。当我尝试使用 Play 商店的小部件时,它们在启动后似乎都有延迟才能更新其内容。这看起来像是我不得不忍受的东西,但如果有人有想法,我将不胜感激。
最佳答案
您必须像这样在您的 Manifest.xml 中创建一个启动完成接收器:
<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="com.example.boot" />
</intent-filter>
</receiver>
然后在 BootUpReceiver.java 中,您可以获取所有应用小部件 ID 并更新它们:
AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
ComponentName widgetComponent = new ComponentName(context,MyWidgetProvider.class);
int[] appWidgetIds = widgetManager.getAppWidgetIds(widgetComponent);
for(int i=0;i<appWidgetIds.length;i++) {
//Updating code here
}
关于android - 启动后立即恢复小部件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577818/