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

时间:2014-12-09 09:58:01

标签: android

我正在创建一个意向服务,以便在服务器上上传数据。在此意向服务中,在与服务器建立连接之前,我正在检查是否有互联网连接。如果互联网连接可用,则继续创建警报(在服务内)以在稍后的时间点重新启动相同的服务。 我的问题是,这是一个好的做法还是在这种情况下我还应该做些什么。

2 个答案:

答案 0 :(得分:0)

试试这个:

@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方法以了解您的服务何时销毁,然后创建警报以唤醒您的服务。

答案 1 :(得分:0)

我正在努力!这是我的代码! 在这里,我将方法名称设为"设置"设置闹钟

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;

}

现在你必须制作一个报警接收器并在寄存器中进行注册广播收发器的输入

在您的广播收发器中,您必须拥有onCreate方法,White this Line才能启动服务

context.startService(new Intent(context,MyService.class));

也许它会帮助你!如果您需要更多帮助,请告诉我。