Android startForeground通知消失
我的android应用程序启动了一项服务来监听耳机按钮。当服务运行时,我想显示一个通知。因为它不被杀死也很重要,所以我决定在我的服务中使用startForeground函数 在服务的OnCreate中,我启动BuildNotification(): 第一次启动服务时,将显示通知并将其保留在状态栏中,直到服务被销毁。但是,如果服务是第二次创建的,它只会显示几秒钟 在它消失后,该服务仍在运行。我还执行了“adb shell dumpsys activity services”,它确实显示了要在前台运行的服务,并为NotItation提供了正确的标志:Android startForeground通知消失,android,service,notifications,Android,Service,Notifications,我的android应用程序启动了一项服务来监听耳机按钮。当服务运行时,我想显示一个通知。因为它不被杀死也很重要,所以我决定在我的服务中使用startForeground函数 在服务的OnCreate中,我启动BuildNotification(): 第一次启动服务时,将显示通知并将其保留在状态栏中,直到服务被销毁。但是,如果服务是第二次创建的,它只会显示几秒钟 在它消失后,该服务仍在运行。我还执行了“adb shell dumpsys activity services”,它确实显示了要在前台运
isForeground=true foregroundId=1 foregroundNoti=Notification(contentView=com.example.mediabuttontest/0x10900a7 vibrate=null,sound=null,defaults=0x0,flags=0x62)
0x62标志表示以下各项处于活动状态:标志\u前台\u服务、标志\u否\u清除、标志\u正在进行的\u事件
我认为这对于保持通知处于活动状态是正确的
有人了解这种行为吗?为什么它在第一次创建服务时工作,而不是第二次?我的代码有错误吗
编辑:感谢您的时间和评论,我已经创建了另一个测试应用程序,并开始删除代码,直到问题消失。最后,它是由启用/禁用广播接收器组件引起的:
pm.setComponentEnabledSetting(mRemoteControlResponder,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
不知怎的,这使得通知消失了。在文档中,它还提到“DONT_KILL_APP”会使您的应用程序表现得不可预测:
设置此选项时要小心,因为更改组件状态会使包含应用程序的行为不可预测
我想这是真的:)在这里显示完整的代码。。
pm.setComponentEnabledSetting(mRemoteControlResponder,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);