Android:正确的方法来停止,取消绑定并完全删除NotificationListenerService

时间:2016-06-05 01:05:50

标签: android service

我有一个从Manifest启动的NotificationListenerService。该服务正在运行并正在处理通知。我想能够停止,取消绑定和删除(onDestroy调用)。有人可以提供一个最小的例子吗?

我尝试过实现ServiceConnection和unbind()以及selfstop(),但它仍然无法运行onDestroy。我还尝试在内联设置NotificationListenerService,但无法弄清楚如何绑定它。

1 个答案:

答案 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); 列入黑名单(因为它反复无法绑定到它),所以只有在您永久/半永久地禁用它时才应该使用它。