Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在服务中使用alarmmanager在一段时间后重新启动同一服务_Android - Fatal编程技术网

Android 在服务中使用alarmmanager在一段时间后重新启动同一服务

Android 在服务中使用alarmmanager在一段时间后重新启动同一服务,android,Android,我正在创建一个intent服务,以便将数据上载到服务器上。在这个意图服务中,在与服务器连接之前,我会检查互联网连接是否可用。如果internet连接可用,则继续,或者在服务内部创建警报,以便稍后重新启动相同的服务。 我的问题是,在这种情况下,这是一种好的做法还是我应该做些别的事情。试试这个: @Override public void onTaskRemoved(Intent rootIntent) { super.onTaskRemoved(rootIntent); Inte

我正在创建一个intent服务,以便将数据上载到服务器上。在这个意图服务中,在与服务器连接之前,我会检查互联网连接是否可用。如果internet连接可用,则继续,或者在服务内部创建警报,以便稍后重新启动相同的服务。 我的问题是,在这种情况下,这是一种好的做法还是我应该做些别的事情。

试试这个:

@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));

也许对你有帮助!如果需要更多帮助,请告诉我。

为什么不使用计数器值?