2011-08-29 12 views
7

Estoy probando los servicios de Intent. Esto es lo que uso para llamarServicio de intenciones que nunca se llama

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);}}); 

Sin embargo, en mi clase UpdateLocation, nunca golpea cualquiera de mis puntos de quiebre.

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(); 
... 

¿Qué está pasando?

Gracias

PS. Estoy usando esto porque quiero llamarlo con un administrador de alarmas. Sin embargo, al hacer clic en el botón Me gustaría mostrar un diálogo de progreso, ¿dónde colocaría el diálogo de progreso para un servicio intencionado? (Solo he tenido experiencia trabajando con tareas asíncronas hasta el momento)

+0

No soy experto en esto, pero ¿no tiene que registrar su receptor Y establecer un filtro para la intención particular que desea capturar? Cuando hice esto, lo hice en código, pero creo que también se puede hacer en Manifest/xml – Kerry

+0

¿podría mostrarme un ejemplo? No estoy muy seguro de lo que quiere decir con el filtro – Sean

+0

A veces ha dado un nombre 'android: name' incorrecto en' AndroidManifest.xml', es posible que sin el nombre del paquete –

Respuesta

15

¿Te ha declare your service en AndroidManifest.xml? No se invocará a menos que se declare así:

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

sí, ese fue el problema, gracias – Sean

+1

El nombre es relativo al 'paquete' definido en la etiqueta de manifiesto. Si su etiqueta manifiesta tiene 'package' definido como' com.example' y su servicio está en 'com.example.data', entonces el nombre del servicio deberá ser' .data.ExampleService'. –

3

Agregar la siguiente línea le permitirá recorrer el servicio. Asegúrese de eliminarlo cuando no esté depurando. Si no lo hace, el procesamiento de su servicio se detendrá en ese punto y no continuará.

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

puse esta línea antes o después del servicio de inicio? – Sean

+0

va dentro de su IntentService. Colóquelo justo antes de su punto de interrupción o al principio de onHandleIntent() – bradley4

Cuestiones relacionadas