放handler里面去更新UI,UI的更新,只能在主线程,完毕.

解决方案 »

  1.   

    你这段代码写的少东西
    应该用AppWidgetManager的updateAppWidget方法调用下才会更新,参数是
    widgetId和RemoteView切记在onReceive不调用这个方法是不会更新的
      

  2.   

    RemoteView不是View,只是个代理,单单设置是不会有效果的,必须调用appWidgetManager.updateAppWidget(appWidgetIds, rvs)才会被发送到真实的View上
      

  3.   


    在onReceive()里面怎么获得appWidgetManager和appWidgetId啊?
      

  4.   


    在onReceive()里面怎么获得appWidgetManager和appWidgetId啊?
    AppWidgetManager appWidgetManager = AppWidgetManager
    .getInstance(context);
    //如果更新所有的widget,那么
    int[] widgetIDs = appWidgetManager
    .getAppWidgetIds(new ComponentName(context,
    NoteWidgetProvider.class));
    appWidgetManager.updateAppWidget(widgetIDs, views);//如果更新所有的widget,如果更新某一个widget,那么要从intent中得到id
    //当然这个widgetID时你事先知道的,比如我想要点击某个widget,去配置它
    Intent intent = new Intent(context, Editor.class);
    intent.setAction(TAG + appWidgetId); // setAction to make intent
    // unique or all widgets
    // will use one intent
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK |
    // Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
    intent, 0);
    views.setOnClickPendingIntent(R.id.root, pendingIntent);//配置完成后给这个NoteWidgetProvider发送广播,从intent获取id
    int widgetID = intent.getIntExtra(
    AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
    ...
    appWidgetManager.updateAppWidget(widgetID, views);
      

  5.   

    NoteWidgetProvider.class是我项目里的名称,你换成Timer_appwidget_provider就好了