当前位置: 首页 > 知识库问答 >
问题:

想要隐藏通知,但是获取context.startForegroundService()时没有调用service.startForeground()

澹台建华
2023-03-14
try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                String NOTIFICATION_CHANNEL_ID = "com.app..";
                String channelName = "App Background Service";
                NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
                channel.setLightColor(Color.BLUE);
                channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                assert manager != null;
                manager.createNotificationChannel(channel);

                NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
                Notification notification = notificationBuilder.setOngoing(true)
                        .setSmallIcon(R.drawable.icon)
                        .setContentTitle("App is running in background")
                        .setPriority(NotificationManager.IMPORTANCE_MIN)
                        .setCategory(Notification.CATEGORY_SERVICE)
                        .build();
                startForeground(0, notification);
            } else
            {
                startForeground(0, new Notification());
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

原因:context.startForegroundService()随后没有调用service.startForeground()

我希望服务不显示任何通知给用户和完成它的任务,而不会被杀死。在构建版本>26中,这可能吗?

共有1个答案

易淳
2023-03-14

我希望服务不向用户显示任何通知,并在不被杀死的情况下安静地完成它的任务

使用JobintentService并确保您的工作将在10分钟内完成。注意,在工作开始之前可能会有一些延迟(这将不计入10分钟的限制)。

或者,使用intentservice并确保您的工作将在不到1分钟内完成。

 类似资料:
  • 我有个问题。也许这是非常基本的。我们可以这样做吗 而不实际调用我们测试类中的方法? 我的测试类: 如您所见,“提供者”只被嘲笑而没有被显式调用。调用它的唯一方法是当我调用action.update()时;我得到了错误 通缉但未调用:实际上,与此模拟没有任何交互。provider.get名称()

  • 问题内容: 我正在使用Swing 使某个自定义内容在特定时间出现。我希望用户可以选择单击“隐藏”按钮,以关闭该通知并使一个小时后返回。我该如何实现? 问题答案: 有初步的延迟;只需将其设置为即可。调用后一个小时,您将被呼叫。 附录:这是一个按钮示例,该按钮在指定的时间段内隐藏了它的封闭窗口。

  • 我订阅了Firebase Project,以便通过Web发送通知。 我准备了一个HTML页面来允许通知并获取实例ID令牌。一旦得到这个I.I.令牌,我就使用“REST控制台”发出POST请求来发送我的第一个通知。 以上是有关请求的更多信息: 让我解释一些密钥: -授权头:密钥是Firebase控制台中的服务器密钥。 -JSON中的“to”字段是我请求使用通知权限的HTML页面中出现的实例ID令牌。

  • 我需要通过xpath获取DOM元素。我从这个链接中得到了答案,在SeleniumWebDriver中有没有一种使用JavaScript通过XPath获取元素的方法?。在隐藏元素(显示:无)的情况下,此函数不会返回准确的结果。 在本例中,我尝试获取第一个div内容,但它显示了第二个div元素,它将隐藏元素带入计数。我还需要在计数中提取隐藏元素。在这方面需要帮助。

  • 我尝试了例外情况下给出的解决方案:mockito想要但没有调用,实际上与这个mock没有任何交互,而这个mockito也想要但没有调用:实际上,与这个mock没有任何交互但仍然得到相同的错误。我是不是漏掉了什么?以下是me的实现:-