Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android startForeground通知消失_Android_Service_Notifications - Fatal编程技术网

Android startForeground通知消失

Android startForeground通知消失,android,service,notifications,Android,Service,Notifications,我的android应用程序启动了一项服务来监听耳机按钮。当服务运行时,我想显示一个通知。因为它不被杀死也很重要,所以我决定在我的服务中使用startForeground函数 在服务的OnCreate中,我启动BuildNotification(): 第一次启动服务时,将显示通知并将其保留在状态栏中,直到服务被销毁。但是,如果服务是第二次创建的,它只会显示几秒钟 在它消失后,该服务仍在运行。我还执行了“adb shell dumpsys activity services”,它确实显示了要在前台运

我的android应用程序启动了一项服务来监听耳机按钮。当服务运行时,我想显示一个通知。因为它不被杀死也很重要,所以我决定在我的服务中使用startForeground函数

在服务的OnCreate中,我启动BuildNotification():

第一次启动服务时,将显示通知并将其保留在状态栏中,直到服务被销毁。但是,如果服务是第二次创建的,它只会显示几秒钟

在它消失后,该服务仍在运行。我还执行了“adb shell dumpsys activity services”,它确实显示了要在前台运行的服务,并为NotItation提供了正确的标志:

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);