D'après tout ce que j'ai vu sur Stack Exchange et ailleurs, j'ai tout configuré correctement pour lancer un IntentService au démarrage d'Android OS. Malheureusement, il ne démarre pas au démarrage, et je ne reçois aucune erreur. Peut-être les experts peuvent-ils m'aider...
Manifeste :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phx.batterylogger"
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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".BatteryLogger"/>
<receiver android:name=".StartupIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
BroadcastReceiver pour Startup :
package com.phx.batterylogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, BatteryLogger.class);
context.startService(serviceIntent);
}
}
UPDATE : J'ai essayé à peu près toutes les suggestions ci-dessous, et j'ai ajouté une journalisation telle que . Log.v("BatteryLogger", "Got to onReceive, about to start service");
au gestionnaire onReceive du StartupIntentReceiver, et rien n'est jamais enregistré. Donc ça n'arrive même pas jusqu'au BroadcastReceiver.
Je pense que je déploie l'APK et le teste correctement, je viens de lancer Debug dans Eclipse et la console indique qu'il l'installe avec succès sur ma tablette Xoom à l'adresse suivante \BatteryLogger\bin\BatteryLogger.apk. Ensuite, pour tester, je redémarre la tablette, puis je regarde les journaux dans DDMS et je vérifie les services en cours d'exécution dans les paramètres du système d'exploitation. Est-ce que tout cela semble correct ou est-ce que quelque chose m'échappe ? Encore une fois, toute aide est la bienvenue.
1 votes
Quel problème vous avez, vous n'avez pas d'interface utilisateur ?
1 votes
Le service ne démarre jamais, c'est ça le problème.
0 votes
Comment avez-vous su que votre service ne démarrait pas, avez-vous imprimé les journaux ou autre chose de ce genre ?
1 votes
Vous n'avez pas besoin de journaux pour voir qu'il ne fonctionne pas. Le système d'exploitation Android expose les services en cours d'exécution. Cependant, il serait sage d'utiliser la journalisation pour voir si une erreur se produit. Je suppose qu'une erreur se produit avant context.startService() si une erreur se produit.
1 votes
J'ai ajouté
Log.v("BatteryLogger", "Got to onReceive, about to start service");
au handler onReceive, et il n'apparaît jamais dans les logs. Donc l'écouteur échoue ( ?)0 votes
Pourquoi vous écrivez un récepteur de radiodiffusion. Vous pouvez directement lancer votre service à la réception de l'intention BOOT_COMPLETED. C'est juste une idée.
0 votes
@HellBoy Pouvez-vous élaborer un peu plus sur ce sujet ?
0 votes
J'ai ajouté une mise à jour décrivant ma méthodologie de déploiement et de test.
0 votes
S'il vous plaît tester mon exemple complet est une démo de travail pour vous, il va travailler à coup sûr ...
0 votes
stackoverflow.com/questions/2784441/