Context.startForegroundService没有启动服务

时间:2018-08-14 02:52:23

标签: android android-intent foreground-service

我正在尝试遵循新的Android O指南启动前台服务以进行位置更新。当我调用context.startForegroundService(foregroundIntent)时,服务类中什么也没有发生,甚至没有调用onCreate()。但是,该应用程序继续运行,没有任何错误。

这是我的意图:

val foregroundIntent = Intent(context, GeofenceForegroundService::class.java)

我用来创建Intent的上下文是活动上下文,而不是应用程序上下文。

这是Android Manifest中的服务:

<application
...
    <service android:name=".services.GeofenceForegroundService"
             android:exported="false" />
</application>

这是未启动的服务类中的onCreate,onStartCommand和onBind。

override fun onCreate() {
    super.onCreate()
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) //Break point here

    locationRequest.interval = UPDATE_INTERVAL_IN_MILLISECONDS
    locationRequest.fastestInterval = 
            FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS
    locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
    // setup notification channel if Android O or higher
}

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    val DONT_SET_EXPIRE: Long = -123456
    val expirationTime = intent?.getLongExtra(REQUEST_EXPIRATION_EXTRA, DONT_SET_EXPIRE)
    eventName = intent?.getStringExtra(EVENT_NAME_EXTRA)
    if(expirationTime != null && expirationTime != DONT_SET_EXPIRE) {
        locationRequest.expirationTime = expirationTime
    }

    // If the location permission is off stop the service, it isn't doing anyone any good.
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        startForeground(NOTIFICATION_ID, makeNotification())
        fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null)
    } else {
        stopSelf()
    }

    return START_STICKY
}

override fun onBind(p0: Intent?): IBinder? = null

我尝试改为致电context.startService(foregroundService),但似乎没有任何变化。 始终在应用程序处于前台时调用此代码,因此后台限制不应该成为问题。

我们将不胜感激您能提供的任何帮助,如果您需要查找其他代码以查找任何问题,请告诉我。这是我第一次使用前台服务,所以如果我犯了一个非常明显的错误,请多多包涵。我试图彻底阅读如何正确地做事,但是有可能我错过了一些应该直接的事情。

0 个答案:

没有答案