2011-08-29 4 views
7

J'essaie les services Intent. C'est ce que j'utilise pour l'appelerIntent Service ne se fait jamais appeler

Button updateLocation = (Button) findViewById(R.id.btnUpdateLocation); 
     updateLocation.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent updateLocIntent=new Intent(ImTracking.this,UpdateLocation.class); 
       startService(updateLocIntent);}}); 

Cependant, dans ma classe UpdateLocation, elle n'atteint jamais mes points de rupture.

public class UpdateLocation extends IntentService{ 

    public UpdateLocation() { 
     super("UpdateLocation"); 
    } 


    @Override 
    protected void onHandleIntent(Intent intent) { 

       SharedPreferences prefs = getSharedPreferences("Settings", 0); 
       final String id = prefs.getString("ID", ""); 
       DefaultHttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httpost = new HttpPost(
         "http://iphone-radar.com/gps/gps_locations"); 

       JSONObject holder = new JSONObject(); 
... 

Que se passe-t-il?

Merci

PS. Je l'utilise parce que je veux l'appeler avec un gestionnaire d'alarme. Cependant, lors d'un clic sur un bouton, je voudrais afficher une boîte de dialogue de progression, où placerais-je la boîte de dialogue de progression pour un service d'intention? (Je n'ai eu l'expérience de travailler avec des tâches asynchrones qu'à ce jour)

+0

Je ne suis pas expert en la matière, mais avez-vous pas enregistrer votre récepteur et définir un filtre pour l'intention particulat que vous souhaitez capturer? Quand j'ai fait ceci je l'ai fait dans le code mais je pense que cela peut être fait dans le Manifeste/xml aussi – Kerry

+0

pourriez-vous me montrer un exemple? Je ne suis pas tout à fait sûr de ce que vous entendez par filtre – Sean

+0

Parfois, vous avez donné le mauvais 'android: name' dans' AndroidManifest.xml', il peut sans nom de paquet –

Répondre

15

vous at-declare your service dans AndroidManifest.xml? Il ne sera pas invoquée que si elle est déclarée comme ceci:

<manifest ... > 
    ... 
    <application ... > 
     <service android:name=".ExampleService" /> 
     ... 
    </application> 
</manifest> 
+0

oui, c'était le problème, merci – Sean

+1

Le nom est relatif au 'package' défini dans la balise manifeste. Si votre étiquette de manifeste a 'package' défini comme' com.example' et votre service est dans 'com.example.data' alors le nom du service devra être' .data.ExampleService'. –

3

L'ajout de la ligne ci-dessous vous permettra de parcourir le service. Assurez-vous de le supprimer lorsque vous ne déboguez pas. Si vous ne le faites pas, le traitement de votre service s'arrêtera à ce moment-là et ne continuera pas.

android.os.Debug.waitForDebugger(); 
+0

puis-je mettre cette ligne avant ou après startservice? – Sean

+0

il va à l'intérieur de votre IntentService. Placez-le juste avant votre point d'arrêt ou au début de onHandleIntent() – bradley4

Questions connexes