频繁更新android小部件

频繁更新android小部件,android,Android,我正在创建一个随机数的android小部件。。工作正常。但是我想在1秒钟后更新这个数字。。。但这是不可能的请帮忙这是我的密码 public class MainActivity extends AppWidgetProvider { public void onUpdate(Context context,AppWidgetManager appWidgetManager, int[] appWidgetIds){ super.onUpdate(context, appWidgetManager

我正在创建一个随机数的android小部件。。工作正常。但是我想在1秒钟后更新这个数字。。。但这是不可能的请帮忙这是我的密码

public class MainActivity extends AppWidgetProvider {
public void onUpdate(Context context,AppWidgetManager appWidgetManager, int[] appWidgetIds){
super.onUpdate(context, appWidgetManager, appWidgetIds);
for(int i=0;i<appWidgetIds.length;i++){
int appWidgetId= appWidgetIds[i];
Intent intent=new Intent(context,MainActivity.class);
PendingIntent pending=PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views=new RemoteViews(context.getPackageName(),R.layout.activity_main);

Random r=new Random();
int randomInt=r.nextInt(10);
String rand=String.valueOf(randomInt);
views.setTextViewText(R.id.textView1,rand);

final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 1000;
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);

appWidgetManager.updateAppWidget(appWidgetId, views);

}
}
}
公共类MainActivity扩展了AppWidgetProvider{
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
onUpdate(上下文、appWidgetManager、AppWidgetId);

对于(inti=0;i我希望您可以解决这个问题,不管怎样,我只是粘贴我的代码

1)AppWidgetProvider

public class SimpleWidgetProvider extends AppWidgetProvider {

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int count = appWidgetIds.length;

    for (int i = 0; i < count; i++) {
        int widgetId = appWidgetIds[i];
        String number = String.format("%03d", (new Random().nextInt(900) + 100));

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                R.layout.simple_widget);
        remoteViews.setTextViewText(R.id.textView, number);

        Intent intent = new Intent(context, SimpleWidgetProvider.class);
        intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        remoteViews.setOnClickPendingIntent(R.id.actionButton, pendingIntent);
        appWidgetManager.updateAppWidget(widgetId, remoteViews);
    }
}

@Override
public void onReceive(Context context, Intent intent)
{
    if (intent.getAction().equals("com.aaa.bbb.REQUEST_WIDGET_UPDATE"))
    {
        //ComponentName, RemoteViews and AppWidgetManager
        ComponentName provider = new ComponentName(context.getApplicationContext(), SimpleWidgetProvider.class);
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.simple_widget);
        AppWidgetManager manager = AppWidgetManager.getInstance(context.getApplicationContext());

        //Change the TextView value
        //String timeLeft = intent.getStringExtra("timeLeft");

        String number = String.format("%03d", (new Random().nextInt(900) + 100));
        views.setTextViewText(R.id.textView, number);

        //Update the widget
        manager.updateAppWidget(provider, views);
    }
    else
    {
        super.onReceive(context, intent);
    }
}
}

3)AndroidManifest.xml

<receiver android:name="SimpleWidgetProvider" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            <action android:name="com.aaa.bbb.REQUEST_WIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/simple_widget_info" />
    </receiver>

考虑使用服务更新小部件。。。
<receiver android:name="SimpleWidgetProvider" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            <action android:name="com.aaa.bbb.REQUEST_WIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/simple_widget_info" />
    </receiver>