2010-12-15 131 views
0

J'essaie d'invoquer certaines fonctions de mon service avec des intentions envoyées par mon activité.Je reçois l'erreur "Incident de résultat du service inconnu" sur plusieurs intentions

Voilà comment j'envoyer des intentions de l'activité (en thread d'interface utilisateur):

Intent it = new Intent(MyService.INTENT_ACTIVITY_POSITION_CHANGED); 
it.setClass(getApplicationContext(), MyService.class); 
it.putExtra("posPercentX", x); 
it.putExtra("posPercentY", y); 
startService(it); 

Voici comment mon onStartCommand ressemble à MyService:

@Override 
    public int onStartCommand (Intent intent, int flags, int startId){ 
     super.onStartCommand(intent, flags, startId); 

     if(intent.getAction().equals(INTENT_ACTIVITY_START)){ 
     Toast.makeText(this,"onStartCommand ...", Toast.LENGTH_SHORT).show(); 
     }else if(intent.getAction().equals(INTENT_ACTIVITY_POSITION_CHANGED)){ 
     // here comes some code to get extras from intent 
     Log.d("INTENT_ACTIVITY_POSITION_CHANGED", "x=" + posX + " y=" + posY); 
     //TODO preveri 
     } 
     return startId; 
    } 

après quelques appels que je reçois:

ERROR/ActivityManager(52): java.lang.IllegalArgumentException: Unknown service start result: 4 

Pourquoi ai-je cette erreur? une idée?

Répondre

5

Pourquoi pensez-vous que vous devriez retourner startId? La documentation de l'intention onStartCommand() est

L'intention fournie à startService (intention), comme indiqué. Ce peut être null si le service est redémarré après que son processus a disparu , et il avait précédemment retourné tout sauf START_STICKY_COMPATIBILITY.

indicateurs Données supplémentaires sur cette demande de démarrage. Actuellement 0, START_FLAG_REDIVERY ou START_FLAG_RETRY.

startId Un entier unique représentant cette demande spécifique à start. Utilisez avec stopSelfResult (int). Retours

* The return value indicates what semantics the system should use for 

état commencé actuelle du service. Il peut être l'une des constantes associées aux bits START_CONTINUATION_MASK

Vous avez donc besoin de revenir START_STICKY, ou l'une des valeurs de http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK

+0

Hehe merci pour la réponse rapide. Je commence toujours à connaître Android et la mauvaise valeur de retour n'était pas évident pour moi. – danizmax

+0

Pas de soucis. Je peux venir de ressembler à une bite, mais ce n'est pas personnel = P – Falmarri