Prezados instrutores e colegas do forum, boa tarde!
Estou tentando criar uma aplicação que rode uma serviço em segundo plano (background). Inicialmente, para teste, apenas implementei um código responsável por vibrar o smartphone, de 5 em 5 segundos.
Orientado pela documentação oficial do Android (https://developer.android.com/guide/components/services), estendi a classe IntentService (sobrescrevendo o método onHandleIntent, conforme orientação no conteúdo do link), e criei uma outra classe estendendo android.app.Application. Contudo, me parece que o método onCreate da classe que estendi de android.app.Application nunca está sendo invocado. Veja meu simples código de teste, abaixo:
Classe que estende a Android Application class:
package br.com.exemplos.executarsegundoplano;
import android.app.Application;
import android.content.Intent;
public class Principal extends Application {
private Principal() {
super();
}
@Override
public void onCreate() {
super.onCreate();
Intent serviceIntent = new Intent(Principal.this, Servico.class);
startService(serviceIntent);
}
}
Classe que estende a IntentService class:
package br.com.exemplos.executarsegundoplano;
import android.app.IntentService;
import android.app.Service;
import android.content.Intent;
import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
public class Servico extends IntentService {
public Servico() {
super("Servico");
}
@Override
protected void onHandleIntent(Intent intent) {
final Vibrator vibrador = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
vibrador.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
else
vibrador.vibrate(500);
try {
Thread.sleep(5000);
}
catch (InterruptedException excecao) {
Thread.currentThread().interrupt();
}
}
}
Arquivo AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.exemplos.executarsegundoplano">
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name="br.com.exemplos.executarsegundoplano.Principal"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@android:style/Theme.NoDisplay">
<service
android:enabled="true"
android:name="br.com.exemplos.executarsegundoplano.Servico">
</service>
</application>
</manifest>
O que está faltando para que, após esta aplicação ser instalada no sistema operacional Android (e também quando o sistema operacional for reiniciado), a aplicação seja executada e o método onCreate da classe Principal (que estende Application) seja processado?
Desde já agradeço sua solicitude e presteza no atendimento deste!