Android Widget服务(开始使用报警)经常被调用

Android Widget服务(开始使用报警)经常被调用,android,android-widget,android-alarms,android-appwidget,Android,Android Widget,Android Alarms,Android Appwidget,在一个需求中,我创建了一个小部件,每5分钟更新一次。我在互联网上发现,我不应该使用java线程,而应该使用AlarmManager来节省电池。现在我正在使用AlarmManager进行此操作 我面临的问题是服务类的onStart方法被频繁调用。一秒钟几乎10次。听说是我的两门课 public class MyAppWidget extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManag

在一个需求中,我创建了一个小部件,每5分钟更新一次。我在互联网上发现,我不应该使用java线程,而应该使用AlarmManager来节省电池。现在我正在使用AlarmManager进行此操作

我面临的问题是服务类的onStart方法被频繁调用。一秒钟几乎10次。听说是我的两门课

public class MyAppWidget extends AppWidgetProvider {

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {  
        intent = new Intent(context, UpdateWidgetService.class);
        context.startService(intent);
    }
}
服务级别是

public class UpdateWidgetService extends Service {  

private Intent intent;

@Override
public void onStart(Intent intent, int startId) {
this.intent = intent;
System.out.println("This is getting printed 10 times in a second.");
final PendingIntent pending = PendingIntent.getService(getApplication(), 0, intent, 0);
AlarmManager alarm = (AlarmManager) getApplication().getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 3000;
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);     

stopSelf();
super.onStart(intent, startId);
 } 
}
我还在xml文件中为自动刷新设置了属性,但它没有用。应用程序未使用以下属性刷新小部件。我还想知道如果应用程序使用此属性,将调用哪个方法

android:updatePeriodMillis="1000"

我建议你把车开走

super.onStart(intent, startId);
直到你的方法的开始。在使用stopSelf()停止服务后调用它是不对的