Служба Foreground завершает свою работу после уничтожения приложения - PullRequest
0 голосов
/ 28 июня 2019

Я пытался запустить Службу в фоновом режиме, потому что я реализовал подход переднего плана, все еще убивая приложение. Мне нужен этот сервис, чтобы вернуть мне местоположение пользователя, даже если приложение убито.

MainActivity.kt

private fun kickStartService(){
        var intent = Intent(this , LocationService::class.java)
        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
        intent.putExtra("extra" , "extra")
        ContextCompat.startForegroundService( this , intent)
//        startService( intent)

    }

LocationService.kt



override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        myNotification(intent)
        mGoogleApiClient = GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build()

        mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
        if (!mGoogleApiClient!!.isConnected) {
            mGoogleApiClient!!.connect()
        }

        return START_NOT_STICKY
    }



    fun myNotification( intent : Intent?){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            var extra = intent?.getStringExtra("extra")
            var pendingIntent: PendingIntent =
                Intent(this, MainActivity::class.java).let { notificationIntent ->
                    PendingIntent.getActivity(this, 0, notificationIntent, 0)
                }
            var notification: Notification = NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle("Notification Title")
                .setContentText(extra)
                .setSmallIcon(R.drawable.notification_icon_background)
                .setContentIntent(pendingIntent)
                .setTicker("Ticker Text")
                .build()
            startForeground(1, notification)
        }
    }

1 Ответ

0 голосов
/ 10 июля 2019

Что ж, мой плохой, я использовал Xiaomi Mi Mix 2, и так случилось, что Mi не позволяет вам запускать службу переднего плана, если у вас есть автоматический запуск из настроек приложения в диспетчере приложений.Как только я включил его, моя служба переднего плана работает как брелоки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...