FOREGROUND_SERVICE
时间: 2023-08-07 13:01:56 浏览: 69
FOREGROUND_SERVICE是一个权限,用于在Android 9(API级别28)或更高版本中使用前台服务。要请求FOREGROUND_SERVICE权限,需要在AndroidManifest.xml文件中添加以下代码:[1]
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<application ...>
...
<service android:name=".ForegroundService" />
</application>
</manifest>
```
在代码中,可以使用importance level来设置前台服务的重要程度。importance level有七种层次,包括IMPORTANCE_DEFAULT、IMPORTANCE_HIGH、IMPORTANCE_LOW、IMPORTANCE_MAX、IMPORTANCE_MIN、IMPORTANCE_NONE和IMPORTANCE_UNSPECIFIED。每个层次都有不同的显示和声音设置。例如,IMPORTANCE_DEFAULT是默认的重要程度,可以在任何地方显示并有声音,而IMPORTANCE_LOW是低重要程度,可以在任何地方显示但没有声音。[2]
要启动前台服务,可以在应用程序的适当位置调用以下代码:[2]
```kotlin
// 启动服务
if (!ForegroundService.Companion.serviceIsLive) {
mForegroundService = Intent(this, ForegroundService::class.java)
mForegroundService.putExtra("Foreground", "This is a foreground service.")
// Android 8.0及以上版本使用startForegroundService在前台启动新服务
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(mForegroundService)
} else {
startService(mForegroundService)
}
} else {
Toast.makeText(this, "前台服务正在运行中...", Toast.LENGTH_SHORT).show()
}
```
在Service的onCreate()回调或者onStart()/onStartCommand()回调中,可以使用通知来表明服务正在运行。为了在Service结束时自动取消通知,需要在Service的onDestroy()回调中添加取消通知的代码。这样就可以实现自定义的Foreground Service。[3]