编程语言
首页 > 编程语言> > 在Android中以编程方式刷新时,小部件被其他内容替换

在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