本帖最后由 zxb6749 于 2012-11-29 14:29:31 编辑

解决方案 »

  1.   

    你启动一个service来更新Appwidget吧,不要用线程
    service里public class UpdateWidgetService extends Service { AlarmManager alarm;
    PendingIntent pintent; public IBinder onBind(Intent intent) { return null;
    } public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    RemoteViews views = WeatherWidget.getRemoteViews(this);
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
    int[] appids = appWidgetManager.getAppWidgetIds(new ComponentName(this,
    WeatherWidget.class));
    WeatherWidget.updateAppWidget(views, this, appWidgetManager);
    appWidgetManager.updateAppWidget(appids, views);
    Date date = new Date();
    long now = date.getTime();
    //间隔
    long unit = 60000;
    int s = date.getSeconds();
    unit = 60000 - s * 1000;
    pintent = PendingIntent.getService(this, 0, intent, 0);
    alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.RTC_WAKEUP, now + unit, pintent); } public void onDestroy() {
    if (alarm != null) {
    alarm.cancel(pintent);
    }
    super.onDestroy();
    }
    }
    这是我的更新代码,你自己改改
    在widget里
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    int[] appWidgetIds) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    getRemoteViews(context);
    context.startService(new Intent(context,UpdateWidgetService.class));
    }

    public void onDisabled(Context context) {
    super.onDisabled(context);
    context.stopService(new Intent(context,UpdateWidgetService.class));
    }