2013-06-01 5 views
7

Obecnie mam usługę, która rozpocznie się w ciągu onCreate sposobu działania przy użyciu:Android: stop/start usługę powstałą w onCreate()

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

Muszę teraz być w stanie zatrzymać tej usługi na zasadzie Naciśnij przycisk i ponownie uruchom go, naciskając inny przycisk, jednak nie jestem pewien, jak zatrzymać tę usługę i ponownie uruchomić ją po stronie metody onCreate.

Sądzę, że musiałbym uruchomić usługę w inny sposób niż to, co obecnie robię? Ale nie jestem pewien co do najlepszej metody.

Spojrzałem na stop service in android, ale ich sposób uruchomienia usługi nie działa w trybie onCreate.

Pełniejszy nad widzenia mojego kodu:

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

     } 
    }; 

Odpowiedz

23

Gdy kiedykolwiek chcesz uruchomić usługę wystarczy

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

i zatrzymać się w najbliższym serwisem zadzwoń

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

Pamiętaj, że należy zadeklarować usługi w AndroidManifest.xml. Jak powiedziałeś, że twoja usługa działa. Jestem pewien, że to zrobiłeś. Wciąż AndroidManifest.xml

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

EDIT wydaje się, że to działa tylko w onCreate kod nie zadziała w słuchacza onclick –

+0

Tak. Ale spróbuj najpierw zatrzymać usługę, a następnie ją uruchomić. Nie zawiedzie się, jeśli usługa została już zatrzymana. – MDMalik

+0

Wygląda na to, że nie działa on w ramach programu onclick, zakładając, że trzeba to zmienić na coś innego? –