Ejecutar service en segundo plano

Soy muy nuevo en Android Development y realmente no entiendo cómo funciona IntentServices. Esto es lo que tengo hasta ahora:

class TimerActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_timer) findViewById(R.id.startBtn).setOnClickListener { startService(Intent(this@TimerActivity, TimerService::class.java)) } findViewById(R.id.stopBtn).setOnClickListener { stopService(Intent(this@TimerActivity, TimerService::class.java)) } } } class TimerService : IntentService("TimerService") { override fun onCreate(){ super.onCreate() toast("Started activity") } override fun onDestroy(){ super.onDestroy() toast("Stopped activity") } override fun onHandleIntent(intent: Intent?) { } } 

Estoy tratando de iniciar una actividad en segundo plano con el clic de un button, y detenerlo con el clic del otro. Pero ¿por qué se activa onDestroy () justo después de onCreate (), sin que yo click el button de detener?

Gracias

Así es como funciona IntentService .

IntentService es una class base para services que manejan requestes asíncronas (expresadas como Intents) a pedido. […]

[…] IntentService recibirá los Intents, iniciará un hilo de trabajo y detendrá el service según corresponda.

Todas las requestes se manejan en un solo hilo de trabajo: pueden tomar tanto time como sea necesario (y no bloquearán el bucle principal de la aplicación), pero solo se procesará una request a la vez.

El service estará vivo mientras haya tareas para procesar. Después de eso, el service finalizará y se reiniciará con la siguiente tarea.

Si desea tener un service en ejecución , posiblemente incluso un service encuadernado , debe subclasificar el Service directamente y encargarse del enhebrado.

Precaución: un service se ejecuta en el mismo process que la aplicación en la que se declara y en el hilo principal de esa aplicación de forma pnetworkingeterminada. Si su service realiza operaciones intensivas o de locking mientras el usuario interactúa con una actividad de la misma aplicación, el service ralentiza el performance de la actividad. Para evitar afectar el performance de la aplicación, inicie un nuevo hilo dentro del service.

y la vida útil

Precaución: para evitar desperdiciar resources del sistema y consumir energía de la batería, asegúrese de que su aplicación detenga sus services cuando esté list para funcionar. Si es necesario, otros componentes pueden detener el service llamando a stopService() . Incluso si habilita el enlace para el service, siempre debe detener el service usted mismo si alguna vez recibe una llamada a onStartCommand() .