我有以下方案:
活动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设置为任何值,但仍然无法正常工作。 有什么建议?