在Android中以编程方式刷新时,小部件被其他内容替换
作者:互联网
在Stack Overflow的某个地方,有一天我找到了以下代码,我对应用程序进行了一些调整:
private void updateWidget() {
AppWidgetManager widgetManager = AppWidgetManager.getInstance(ctx);
ComponentName widgetComponent = new ComponentName(ctx, MyAppWidgetProvider.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
Intent update = new Intent();
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
ctx.sendBroadcast(update);
}
这应该以编程方式刷新应用程序小部件的所有实例. ctx是我在onCreate()中设置的Activity的上下文(此).上面的方法在Activity的onStop()方法中调用.
不幸的是,当它被调用时,它至少一段时间内被其他应用程序的小部件(例如AP News)替换了该应用程序的小部件.
怎么会这样代码有问题吗?
谢谢!
编辑#1:为了更清楚地指出这一点:我已经定义了自动刷新的间隔.但是除此之外,我还想不时从Activity中更新小部件. This question表示这也是可能的.
编辑#2:我刚刚看到错误的窗口小部件仅显示了几秒钟.之后,再次显示我自己的应用程序的小部件.
解决方法:
过去,我在使用小部件时遇到了一些问题,并且已经解决了.我真的不知道我的解决方案对我有用的原因.由于它适用于Marco W.,因此将其放置在这里:我所做的只是将更新代码移到了服务中.当我需要更新时,请启动该服务.同样,我不确定,但是问题已解决.
感谢Marco,我有了更多使用Android的经验.这很有趣 :-)
标签:android-widget,android 来源: https://codeday.me/bug/20191201/2078660.html