Mi esercito a creare un service.
Creo una nuova classe, e la chiamo "Servizio".
public class Servizio { }Estendo la classe Service:
public class Servizio extends Service{ }Eclipse mi dà una segnalazione di errore dicendomi di aggiungere i metodi non implementati, che aggiungo:
public class Servizio extends Service{ @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } }(parallelamente a queste operazioni mi vengono importate le classi necessarie)
Se si tratta di un service "unbound", lascio che onBind continui a restituire null, e implemento altri metodi.
Ecco, ho implementato onStartCommand, con i parametri e tutto, come da tutorial.
Non ho idea, ancora, di cosa significhino i parametri flags e startId, e perché il valore restituito sia la costante START_STICKY. Vedremo in seguito...
public class Servizio extends Service{ @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent,int flags, int startId){ return Service.START_STICKY; } }
Ci aggiungo un segnale alla partenza del Service, su LogCat:
@Override public int onStartCommand(Intent intent,int flags, int startId){ Log.v("SERVICE","PARTITO"); return Service.START_STICKY; }Adesso implemento il metodo onDestroy, quello che viene chiamato alla distruzione del Service:
@Override public void onDestroy(){ Log.v("SERVICE","DISTRUTTO"); }...con il relativo segnale in LogCat.
Ora con due Buttons accendo e spengo il Service, senza dimenticare però di segnalarlo anche in Manifest:
</activity>
<service android:name=".Servizio" />
</application>
<uses-permission android:name="android.permission.BLUETOOTH" />
</manifest>
Questo è il codice dell'Activity dalla quale manipolo il Service:
public class MainActivity extends Activity { Button button1; Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button)findViewById(R.id.button1); button2=(Button)findViewById(R.id.button2); View.OnClickListener onClickListener =new View.OnClickListener() { @Override public void onClick(View v) { if(v==button1) IniziaService(); if(v==button2) StopService(); } }; button1.setOnClickListener(onClickListener); button2.setOnClickListener(onClickListener); } public void IniziaService(){ startService(new Intent(this,Servizio.class)); } public void StopService(){ stopService(new Intent(this,Servizio.class)); } }E andiamo a vedere...
04-05 12:25:12.570: V/SERVICE(2226): PARTITO 04-05 12:25:17.742: V/SERVICE(2226): DISTRUTTO
Perfetto!!!
Nessun commento:
Posta un commento