android - 每秒定期更新小部件

标签 android android-widget widget textview updates

我目前有一个使用两个 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、使用 servicehandler.... 问题是似乎没有人说清楚或给出示例我将如何去做这件事。

因此,如果有人有明确的方法来完成此任务,我将不胜感激,谢谢

最佳答案

您可能有一些服务在后台运行。将广播消息从该服务或 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/

相关文章:

java - 将数据复制到 SD 卡时出现 FileNotFoundException - Android

android - Android NDK 中的 JNIEXPORT 和 JNICALL

android - 启动和停止服务的 PendingIntent

android - 无法创建线程中的 WebView

android - 动态创建按钮

css - 社交媒体小工具只出现在页面和帖子上而不是我的画廊?

Android 4.0 和 HTML5 历史 API

android - 从异步回调更新 Ionic View

java - 存储、转换为视频流 Android 屏幕

python - Python 中的 Tkinter - 从事件窗口中删除小部件