Sobes.tech
Junior — Middle

Który strumień usługi jest automatycznie aktywowany podczas uruchamiania systemu?

sobes.tech AI

Odpowiedź od AI

W Androidzie nie ma wątku Service, który byłby automatycznie aktywowany podczas uruchomienia systemu domyślnie. Jednakże, jeśli aplikacja zarejestrowała BroadcastReceiver na zdarzenie BOOT_COMPLETED i w nim uruchamia Service, to ten Service może automatycznie się uruchomić po załadowaniu systemu.

Przykład: aby serwis uruchamiał się po starcie urządzenia, należy w manifeście podać:

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

<service android:name=".MyService" />

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

A w BootReceiver uruchomić serwis:

class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            val serviceIntent = Intent(context, MyService::class.java)
            context.startService(serviceIntent)
        }
    }
}

W ten sposób, serwis uruchamia się automatycznie po załadowaniu systemu, ale tylko jeśli jest to specjalnie skonfigurowane.