Получена загрузочная трансляция, но не может запустить службу

#service #broadcastreceiver

#Обслуживание #broadcastreceiver

Вопрос:

Я хочу, чтобы фоновая служба моего приложения запускалась при включенном устройстве, поэтому я создаю ЗАГРУЗОЧНЫЙ приемник для запуска моей службы. Вот мой Mainifest:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication">
        <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true"></service>

        <receiver
            android:name=".BootReceiver"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.HOME" />

                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
 

Вот загрузочный приемник:

 package com.example.myapplication

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log

class BootReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        // This method is called when the BroadcastReceiver is receiving an Intent broadcast.
        Log.d("NEWTAG","BOOT is ON!!!!!")
        val startIntent = Intent(context,MyService::class.java)
        context.startService(startIntent)
        Log.d("NEWTAG","SERVICE IS ON!!!!!")
    }
}
 

Это моя служба:

 package com.example.myapplication

import android.app.Service
import android.content.Intent
import android.os.IBinder
import android.util.Log

class MyService : Service() {

    override fun onBind(intent: Intent): IBinder {
        TODO("Return the communication channel to the service.")
    }

    override fun onCreate() {
        super.onCreate()
        Log.d("NEWTAG","Service OnCreate!!!!!")
    }

    override fun onDestroy() {
        Log.d("NEWTAG","Service OnCreate!!!!!")
        super.onDestroy()
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        Log.d("NEWTAG","Service OnCreate!!!!!")
        return START_STICKY
    }

    override fun onTaskRemoved(rootIntent: Intent?) {
        super.onTaskRemoved(rootIntent)
        Log.d("NEWTAG","Service OnCreate!!!!!")
    }
}
 

Я могу получить

ЗАГРУЗКА ВКЛЮЧЕНА!!!!! от получателя, но я не могу получить службу onCreate!!!!!
И onCreate() и onStartCommand() для serivce также не запускались.

Кто-нибудь может оказать мне услугу?

Ответ №1:

Возможно, ваш BroadcastReceiver не запускается после загрузки. Пожалуйста, проверьте.