2013-06-01 12 views
7

Al momento ho un servizio che viene avviato all'interno del metodo onCreate di un'attività utilizzando:Android: Stop/avviare il servizio creato nel onCreate()

Intent intentService = new Intent(this, MainService.class); 
this.startService(intentService); 

Ho bisogno di essere ora in grado di fermare questo servizio su un premere il pulsante e riavviarlo di nuovo su un altro pulsante, tuttavia non sono sicuro su come interrompere questo servizio e ricominciare dal lato del metodo onCreate.

Immagino che avrei bisogno di avviare il servizio in un modo diverso rispetto a quello che sto facendo attualmente? Ma non sono sicuro del metodo migliore per questo.

Ho avuto uno sguardo su stop service in android ma il loro metodo di avvio del servizio sembra non funzionare all'interno di onCreate.

Una più completa sopra la vista del mio codice:

public class MainActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      lock = (Button) this.findViewById(R.id.lock); 
      unlock = (Button) this.findViewById(R.id.unlock); 

      lock.setOnClickListener(btn_lock); 
      unlock.setOnClickListener(btn_unlock); 

      unlock.setVisibility(View.VISIBLE); 

      lock.setVisibility(View.GONE); 

      Intent intentService = new Intent(this, MainService.class); 
      this.startService(intentService); 

     } 
private OnClickListener btn_lock = new OnClickListener() { 
     public void onClick(View v) { 
       unlock.setVisibility(View.VISIBLE); 
       lock.setVisibility(View.GONE); 


     } 
    }; 
private OnClickListener btn_unlock = new OnClickListener() { 
     public void onClick(View v) { 
       unlock.setVisibility(View.GONE); 
       lock.setVisibility(View.VISIBLE); 

     } 
    }; 

risposta

23

Quando mai si desidera avviare un servizio di tutto ciò che serve è

startService(new Intent(this, MainService.class)); 

E per fermare un qualsiasi momento il servizio basta chiamare

stopService(new Intent(this, MainService.class)); 

Ricordare che il servizio deve essere dichiarato in AndroidManifest.xml. Come hai detto che il tuo servizio funziona. Sono sicuro che l'hai fatto. Ancora AndroidManifest.xml

<service android:enabled="true" android:name=".MainService" /> 
+0

EDIT sembra che questo funziona solo in onCreate il codice non funziona nel onclick ascoltatore –

+0

sì. Ma prova a fermare prima un servizio e poi avviarlo. Non si arresterebbe in modo anomalo se il servizio era già stato interrotto – MDMalik

+0

Sembra non funzionare all'interno del listener onclick assumendo che questo debba essere cambiato in qualcos'altro? –

Problemi correlati