代码之家  ›  专栏  ›  技术社区  ›  John Smith

Android:停止、解除绑定和完全删除NotificationListenerService的正确方法

  •  2
  • John Smith  · 技术社区  · 10 年前

    我有一个从清单启动的NotificationListenerService。该服务工作正常,正在处理通知。我希望能够停止、解除绑定和删除(onDestroy调用)。有人能提供一个简单的例子吗?

    我已经尝试实现ServiceConnection、unbind()和selfstop(),但它仍然无法在Destroy上运行。我还尝试设置NotificationListenerService内联,但无法确定如何绑定它。

    1 回复  |  直到 10 年前
        1
  •  11
  •   ianhanniballake    10 年前

    正如在 What's new with Notifications in Android N talk NotificationListenerService 将永远与系统绑定。因为他们总是受到制度的约束,所以它永远不会被摧毁。

    从Android N开始,您可以拨打 requestUnbind() 停止倾听 NotificationListenerService.requestRebind() 重新开始,但在此之前,没有特定的方法可以使系统从您的 通知侦听器服务 .

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

    PackageManager pm  = getApplicationContext().getPackageManager();
    ComponentName componentName = new ComponentName(getPackageName(),
         ".YourNotificationListenerService");
      pm.setComponentEnabledSetting(componentName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);
    

    这将阻止服务完全运行。不幸的是,如果系统暂时将您的 通知侦听器服务 (因为它多次无法绑定到它),所以只能在永久/半永久禁用它时使用。