我有一个从Manifest启动的NotificationListenerService。该服务正在运行并正在处理通知。我想能够停止,取消绑定和删除(onDestroy调用)。有人可以提供一个最小的例子吗?
我尝试过实现ServiceConnection和unbind()以及selfstop(),但它仍然无法运行onDestroy。我还尝试在内联设置NotificationListenerService,但无法弄清楚如何绑定它。
答案 0 :(得分:8)
如What's new with Notifications in Android N talk中所述,NotificationListenerService
永远绑定到系统。由于它们始终受系统约束,因此永远不会被破坏。
从Android N开始,您可以致电requestUnbind()
停止收听并NotificationListenerService.requestRebind()
重新开始,但在此之前没有具体方法可以让系统解除绑定{ {1}}。
当然,您可以使用以下代码完全禁用该服务:
NotificationListenerService
这将阻止服务完全运行。不幸的是,这可能会产生副作用,系统暂时将您的PackageManager pm = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(getPackageName(),
".YourNotificationListenerService");
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
列入黑名单(因为它反复无法绑定到它),所以只有在您永久/半永久地禁用它时才应该使用它。