Я пытаюсь создать приложение, которое запускает сервис во втором плане (в фоновом режиме), как сервис. Изначально для тестирования я только что внедрил код, отвечающий за вибрацию смартфона, каждые 5 секунд.
Руководствуясь официальной документацией Android (https://developer.android.com/guide/components/services), я расширил IntentService. class (переопределяя метод onHandleIntent, как указано в содержимом ссылки), и создал другой класс, расширив android .app.Application. Однако мне кажется, что метод onCreate класса, который я расширил с android .app.Application, никогда не вызывается. См. Мой простой тестовый код ниже:
Класс, расширяющий класс приложения Android:
package br.com.exemplos.executarsegundoplano;
import android.app.Application;
import android.content.Intent;
import android.util.Log;
public class Principal extends Application {
private Principal() {
super();
}
@Override
public void onCreate() {
super.onCreate();
Intent serviceIntent = new Intent(Principal.this, Servico.class);
startService(serviceIntent);
Log.d("Background Process", "onCreate method started.");
}
}
Класс, расширяющий класс IntentService:
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();
}
}
}
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" />
<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>
Чего не хватает, чтобы после установки этого приложения в операционной системе Android (а также при перезапуске операционной системы) приложение выполнялось и метод onCreate класса Principal (который расширяет Application) обрабатывается?