Maison >Java >javaDidacticiel >Pourquoi mon service Android ne démarre-t-il pas automatiquement au démarrage ?
Démarrage automatique du service Android au démarrage
Problème :
Malgré la configuration d'un IntentService pour démarrer automatiquement au démarrage du système, le service ne parvient pas à s'initialiser comme prévu. Le dépannage n'a généré aucun message d'erreur ni indice sur la cause du problème.
Réponse :
Pour démarrer un service au démarrage du système d'exploitation Android, une approche globale est requis. Voici une solution étape par étape :
AndroidManifest.xml :
Assurez-vous que le fichier manifeste comprend les éléments suivants :
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.YOUR_CUSTOM_PERMISSION" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <service android:enabled="true" android:name=".MyService" /> <receiver android:name=".BootBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
BootBroadcastReceiver.java :
Créer un récepteur de diffusion pour écouter pour l'événement de démarrage du système et démarrez le service :
public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { Intent serviceIntent = new Intent(context, MyService.class); context.startService(serviceIntent); } } }
MyService.java :
Implémentez la classe de service :
public class MyService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // Perform service tasks here return START_NOT_STICKY; } @Override public void onDestroy() { // Clean up resources here } }
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!