Android 在服务中使用alarmmanager在一段时间后重新启动同一服务
我正在创建一个intent服务,以便将数据上载到服务器上。在这个意图服务中,在与服务器连接之前,我会检查互联网连接是否可用。如果internet连接可用,则继续,或者在服务内部创建警报,以便稍后重新启动相同的服务。 我的问题是,在这种情况下,这是一种好的做法还是我应该做些别的事情。试试这个:Android 在服务中使用alarmmanager在一段时间后重新启动同一服务,android,Android,我正在创建一个intent服务,以便将数据上载到服务器上。在这个意图服务中,在与服务器连接之前,我会检查互联网连接是否可用。如果internet连接可用,则继续,或者在服务内部创建警报,以便稍后重新启动相同的服务。 我的问题是,在这种情况下,这是一种好的做法还是我应该做些别的事情。试试这个: @Override public void onTaskRemoved(Intent rootIntent) { super.onTaskRemoved(rootIntent); Inte
@Override
public void onTaskRemoved(Intent rootIntent)
{
super.onTaskRemoved(rootIntent);
Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(
getApplicationContext(), 1, restartServiceIntent,
PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) getApplicationContext()
.getSystemService(Context.ALARM_SERVICE);
alarmService.set(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 1000,
restartServicePendingIntent);
}
实现onTaskRemoved方法以了解您的服务何时被破坏,然后创建警报以唤醒您的服务。我正在处理相同的问题!这是我的密码! 在这里,我将方法名设为set以设置报警
public static Boolean set(Context context, int Seconds) {
mTime = Seconds;
Intent mIntent = new Intent(context, AdReciver.class);
mIntent.setAction(Constant.Actions.ALARM_ACTION);
mPendingIntent = PendingIntent.getBroadcast(context, mRequesCode,
mIntent, 0);
mAlarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(System.currentTimeMillis());
mAlarmManager.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis()
+ mTime * 1000, mPendingIntent);
context.stopService(new Intent(context,AdService.class));
return null;
}
现在,您必须创建一个报警接收器,并在Menifest中为Register BroadcastReceiver创建一个条目
在您的广播接收器中,您必须有一个onCreate方法,将此行变为白色以启动服务
context.startService(new Intent(context,MyService.class));
也许对你有帮助!如果需要更多帮助,请告诉我。为什么不使用计数器值?