Android 使用计时器时小部件TextView未更新

Android 使用计时器时小部件TextView未更新,android,timer,android-widget,widget,textview,Android,Timer,Android Widget,Widget,Textview,我有一个文本视图来更新小部件中的时间和日期,并尝试使用计时器每秒更新一次,但它不起作用: public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { final int N = appWidgetIds.length; for (int i = 0; i < N; i++) { int appWidgetId = appWidg

我有一个
文本视图
来更新小部件中的时间和日期,并尝试使用
计时器
每秒更新一次,但它不起作用:

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 clockIntent = new Intent(context, DeskClock.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0);

        final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock);
        views.setOnClickPendingIntent(R.id.rl, pendingIntent);

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                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));
            }
        }, 0, 1000);// Update text every second

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]appWidgetIds){
final int N=appWidgetIds.length;
对于(int i=0;i

我哪里出了问题,所以如果有人知道,请告诉我,并给我正确的方法。提前感谢

尝试更新run()中的应用程序小部件

像这样试试这对我来说很有效,我想我在使用的另一个应用程序中遇到了相同的问题,而不是计时器和计时器任务的使用:

Handler mHandler;
Runnable continuousRunnable = new Runnable() {
        public void run() {
            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);

            mHandler.postDelayed(this, 1000);
        }
    };
  mHandler.post(continuousRunnable);

尝试更新run()中的应用程序小部件

像这样试试这对我来说很有效,我想我在使用的另一个应用程序中遇到了相同的问题,而不是计时器和计时器任务的使用:

Handler mHandler;
Runnable continuousRunnable = new Runnable() {
        public void run() {
            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);

            mHandler.postDelayed(this, 1000);
        }
    };
  mHandler.post(continuousRunnable);

我猜是
处理器mHandler
超出了
OnUpdate
方法。。我试过了,但一次都没有更新,现在我已经开始工作了!我只需要将
timer.schedule()
更改为
timer.scheduleAtFixedRate
我对计时器进行了一些研究,结果发现
scheduleAtFixedRate
只运行一次,而
scheduleAtFixedRate
重复运行。感谢@JRowanIm对
处理程序mHandler的帮助
超出了
OnUpdate
方法。。我试过了,但一次都没有更新,现在我已经开始工作了!我只需要将
timer.schedule()
更改为
timer.scheduleAtFixedRate
我对计时器进行了一些研究,结果发现
scheduleAtFixedRate
只运行一次,而
scheduleAtFixedRate
重复运行。谢谢@JRowan的帮助