【发布时间】:2018-10-23 08:25:39
【问题描述】:
一个简单的调用
Intent serviceIntent = new Intent(this, NotificationService.class);
startService(serviceIntent);
如果应用程序在后台,则将其置于最前面,如果应用程序关闭,则不会发生任何事情。我想避免这种行为,但我不知道该怎么做。
它发生在 android O 和 P 上。
我已经设置alarmManager在特定时间唤醒我的应用程序,然后pendingIntent启动Activity(它不会在屏幕上显示任何内容)并检查从Intent接收到的操作确定要执行的操作。我的应用程序中有 2 个服务,每次醒来时它们都会将应用程序放在前面,这对用户来说很烦人。
【问题讨论】:
-
限制已从 android O 添加,这就是原因。
-
我不认为这是由于 Android 操作系统的行为,我认为您自己的代码在服务启动时以某种方式启动了 Activity。考虑将
Activity.getIntent()的结果转储到Activity.onCreate()中,并确定它是启动器Intent 还是您的alarmManagerIntent。 -
-
@Jeeva 它确实在奥利奥中发生了变化,但不会导致这个问题。奥利奥要求应用在临时白名单上;否则,服务创建失败并引发异常。 OP 似乎在描述的是一个 Activity 自动返回前台。
标签: android service foreground-service