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

Joh*_*ith 1 service android

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

我已经尝试过实现ServiceConnection和unbind()和selfstop()但它仍然不会运行onDestroy.我还试图设置内联NotificationListenerService,但无法弄清楚如何绑定它.

ian*_*ake 9

正如在Android N谈话中的通知新内容中所提到的,a NotificationListenerService将永远绑定到系统.由于它们始终受系统约束,因此永远不会被破坏.

从Android N开始,您将能够调用requestUnbind()停止侦听并NotificationListenerService.requestRebind()重新开始,但在此之前没有特定的方法可以使系统解除绑定NotificationListenerService.

当然,您可以使用以下代码完全禁用该服务:

PackageManager pm  = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(getPackageName(),
     ".YourNotificationListenerService");
  pm.setComponentEnabledSetting(componentName,
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
    PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

这将阻止服务完全运行.不幸的是,这可能会产生副作用,系统暂时将您列入黑名单NotificationListenerService(因为它反复无法绑定到它),所以只有在您永久/半永久地禁用它时才应该使用它.