我目前有一个使用两个 setTextViewText
的小部件:
公共(public)类 DigitalClock 扩展 AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
int N = appWidgetIds.length;
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock);
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
Intent clockIntent = new Intent(context, DeskClock.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0);
views.setOnClickPendingIntent(R.id.rl, pendingIntent);
java.util.Date noteTS = Calendar.getInstance().getTime();
String time = "kk:mm";
String date = "dd MMMMM yyyy";
views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
我的问题是如何使用它每秒设置两个 TextView
以便时间更新,而不是 appwidgetprovider
允许的 30 分钟?
我听说过使用 AlarmManager
、使用 service
、handler
.... 问题是似乎没有人说清楚或给出示例我将如何去做这件事。
因此,如果有人有明确的方法来完成此任务,我将不胜感激,谢谢
最佳答案
您可能有一些服务在后台运行。将广播消息从该服务或 Activity 发送到扩展 AppWidgetProvider 的类(在本例中为 DigitalClock),然后重写同一类的 onReceive() 函数。
第 1 步:从服务或某处发送广播。
第 2 步:在 DigitalClock 类中添加 onReceive() 函数。
public class DigitalClock extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
int N = appWidgetIds.length;
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock);
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
Intent clockIntent = new Intent(context, DeskClock.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0);
views.setOnClickPendingIntent(R.id.rl, pendingIntent);
java.util.Date noteTS = Calendar.getInstance().getTime();
String time = "kk:mm";
String date = "dd MMMMM yyyy";
views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
//Do your task here like updating the textviews
}
}
关于android - 每秒定期更新小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15322144/