Android:父活动完成后服务启动。

时间:2015-03-23 15:56:08

标签: android service alarmmanager

我有以下方案:

活动A-可以启动活动B. 活动B有一个后台服务,它由一个警报触发,如下所示:

alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        serviceSaveSample = new Intent(getApplicationContext(),
                SaveSampleService.class);
        alarmSaveSample = PendingIntent.getService(getApplicationContext(),
                9988766, serviceSaveSample, PendingIntent.FLAG_UPDATE_CURRENT);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (secondsToSample * 1000), secondsToSample * 1000,
                alarmSaveSample);

服务实施:

public class SaveSampleService extends Service {    ...

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {

          PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    new Intent(this, RunActivity.class), 0);


        Notification notif = new NotificationCompat.Builder(
                getApplicationContext()).setAutoCancel(true)
                .setContentText("message").setSmallIcon(R.drawable.logo)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.logo)
                .setContentIntent(contentIntent)
                .build();

        startForeground(startId, notif);
    // some work...
        return START_STICKY;
    }

问题是,如果我将应用程序移动到后台,当活动B位于堆栈顶部且服务正在运行时,服务将在我明确关闭活动B后重新启动。

我已经尝试了任何标志,如果不是所有标志,仍然存在这个问题。 尝试将launchMode设置为任何值,但仍然无法正常工作。 有什么建议?

2 个答案:

答案 0 :(得分:2)

您需要在活动AlarmManager中调用onStopcancelstopService方法。

答案 1 :(得分:0)