为了从我的应用中刷新我的小部件,我在AsyncTask
中使用了这段代码:
// REFRESH WIDGET
int ids[] = AppWidgetManager.getInstance(MainActivity.getActivty().getApplication()).getAppWidgetIds(new ComponentName(MainActivity.getActivty().getApplication(), WidgetClass.class));
Intent intent = new Intent(MainActivity.getActivty(),WidgetClass.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
MainActivity.getActivty().sendBroadcast(intent);
除了它冻结用户界面之外,这是有效的。由于小部件中的过程需要一些时间,这会使屏幕冻结1/2秒,有时甚至更多,我想避免这种情况。
在runnable中使用它会产生相同的结果。
有没有办法在不冻结UI的情况下从应用程序更新小部件?
答案 0 :(得分:0)
如果您只想更新包含许多布局和视图等的小部件TextView
或整个View
,那么您只需使用View.invalidate()
,它就会刷新您的视图。
希望这有帮助。