如何每秒刷新小部件?
Posted
技术标签:
【中文标题】如何每秒刷新小部件?【英文标题】:How to refresh widget every second? 【发布时间】:2012-02-10 10:37:47 【问题描述】:看看下面的代码,我需要每秒更新一次这个 onUpdate 方法,有人可以举一些好的例子吗?主要是我需要将代码从CurFreq(context);
更新为views.setTextViewText(R.id.text_widget_batt, prefNameBattery+"%");
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
final int N = appWidgetIds.length;
for (int i=0; i<N; i++)
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent(context, MyActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.layout_widget, pendingIntent);
CurFreq(context);
Temp(context);
Battery(context);
SharedPreferences myPrefsInfo = context.getSharedPreferences("myPrefsInfo", Context.MODE_PRIVATE);
String prefNameCurFreq = myPrefsInfo.getString(WidgetCurFreq, "");
String prefNameTemp = myPrefsInfo.getString(WidgetTemp, "");
String prefNameBattery = myPrefsInfo.getString(WidgetBattery, "");
views.setTextViewText(R.id.text_widget_freq, prefNameCurFreq);
views.setTextViewText(R.id.text_widget_temp, prefNameTemp+",0°C");
views.setTextViewText(R.id.text_widget_batt, prefNameBattery+"%");
appWidgetManager.updateAppWidget(appWidgetId, views);
【问题讨论】:
应用小部件并非设计为每秒更新一次。 但这不是我的问题的答案。 你会注意到我没有提供它作为答案,而是作为评论。 【参考方案1】:您可以编写 Service 并实现 timer ,并相应地每秒更新小部件。 在计时器中调用您的方法在 OnStartCommand(Intent, int, int) 服务方法中。
【讨论】:
我用 Service 和 Thread 解决了这个问题。不过谢谢你的建议。以上是关于如何每秒刷新小部件?的主要内容,如果未能解决你的问题,请参考以下文章