android – 如何在配置活动中强制更新?

我正在编写一个带有配置活动的小部件,当单击其OK按钮时,该小部件调用以下方法:
private void ok()
{
    // ...Do Widget Configuration...

    // Force an update
    Context context = getApplicationContext();
    RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widget);
    AppWidgetManager.getInstance(context).updateAppWidget(widget_id,views);

    // Return the expected result
    Intent result = new Intent();
    result.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,widget_id);
    setResult(RESULT_OK,result);

    finish();
}

这几乎是从the documentation逐字逐句.tidget_id保存在活动的onCreate()期间挖出的小部件ID.

当我在主屏幕上放置小部件的实例时,我已经验证我得到了预期的事件序列:

> onReceive()获取ACTION_APPWIDGET_ENABLED,如果它是第一个.
> onUpdate()被调用(我在其中检测到未配置窗口小部件并将某些内容绘制为默认操作).
>出现配置活动.
>当我按OK时,上面的ok()方法被调用.

该方法一直到finish()并且配置活动消失,但在此之后没有调用onUpdate()或onReceive(). (小部件本身没有updatePeriodMillis.)我最终在屏幕上显示了一个小部件,该小部件具有我的默认操作的结果但从未得到更新.

如果我在没有配置活动的情况下设置窗口小部件,它会在创建时更新,并且一切都按预期工作(只是没有配置的位).

我在强制更新的方式中遗漏了什么吗?

谢谢!

解决方法

结果证明有效:
new MyWidgetProviderClass()
  .onUpdate(this,AppWidgetManager.getInstance(this),new int[] { widget_id }
   );

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...