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

android java中的foregroundService[副本]

仲孙温文
2023-03-14
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startForegroundService(new Intent(this,service.class));
    }

这是源代码。正如我们所看到的,startForegroundService工作在25 API级别之上。但是,我的问题是脸书、Instagram和WhatsApp是如何在每个API级别使用它的?

共有1个答案

充阳秋
2023-03-14

如果您使用的是androidx(应该是IMO),那么您可以使用contextcompat.startForegroundServce,它适用于所有API版本

如果没有,可以在调用之前检查API版本:

if (Build.VERSION.SDK_INT >= 26) {
    context.startForegroundService(intent);
} else {
    context.startService(intent);
}

请注意,service.startForeground从API5开始就可用了,这意味着您的服务可以成为前台,而无需在这些API版本上调用startForegroundService

在Android8.0之前,创建前台服务的通常方式是创建后台服务,然后将该服务提升到前台。对于Android8.0,有一个复杂的问题;系统不允许后台应用程序创建后台服务。出于这个原因,Android8.0引入了新的方法 ;startForregroundService() 在前台启动新服务。在系统创建服务之后,应用程序有五秒钟的时间调用服务的's ;startforeground() 方法,以显示新服务的用户可见通知。如果应用程序在时限内没有调用startforeground() ,系统将停止服务并声明应用程序为ANR。

 类似资料:
  • 由于某种原因,我的程序在完成线程后崩溃。启动方法。由于这是我第一次使用线程,我完全迷路了,不知道发生了什么。 并称之为踏面: 我会非常感激的! 我的日志显示如下(抱歉弄乱了): 10-22 14:59:43.319:E/AndroidRuntime(961):致命异常:Thread-81 10-22 14:59:43.319:E/AndroidRuntime(961):android。看法View

  • 这可能是一个真正的新手问题,但我正在编写一个Android应用程序,它需要使用一个用C编写的.so库。该.so由几个类组成,是通用C语言,而不是JNI语言。 除了JNI之外,有没有办法从AndroidJava应用程序调用C函数?我所看到的关于JNI的一切都表明,您必须重写本机代码以特定于JNI,如果只给您一个. so,那真是太不方便了。 在Android 4.0.3中,从java应用程序调用本机函

  • 我有一个RSA公钥证书。我可以使用具有。PEM扩展名或仅将其用作具有以下格式的字符串: 启动RSA公共密钥 {KEY} -----结束RSA公钥----- 我试图使用此密钥向服务器发送加密的JSON。我尝试了许多其他相关堆栈溢出问题的解决方案,但没有一个答案不适合我。这个答案似乎有道理https://stackoverflow.com/a/43534042,但有些东西不能正常工作,可能是因为X50

  • 我需要打开包含图像的内部存储文件夹。 清单 xml/file_paths 错误 无论如何,我必须选择始终应用程序打开这个文件夹。 是否可以默认使用我的文件应用程序打开某个文件夹?

  • 我有一个如下格式的数据库: 然而,我希望它是这样的: 我该怎么做?如果不可能,那么,如何使方法1更有效?提前感谢!