Arrestare un servizio in un'attività

Sto utilizzando il seguente codice per interrompere il mio servizio

Intent intent = new Intent(MainActivity.this, UsageRecorderService.class); stopService(intent); 

E questo è il mio servizio che funziona indefinitamente

  • Come avere un'attività che verrà eseguita solo una volta?
  • Acquisizione di un codice monetario di un paese
  • Come generare HMAC MD5 in Android?
  • Utilizzo di Android in sqlite in memory
  • come modificare le immagini con timer
  • Come aggiungere emoticon animato in TextView o EditText in Android
  •  public class UsageRecorderService extends IntentService { public UsageRecorderService() { super("UsageRecorder"); } @Override protected void onHandleIntent(Intent intent) { while (true) { UsageRecorder.recordUsages(this, false); SystemClock.sleep(10000); } } } 

    Perché non interrompe il mio servizio?

  • Imansible risolvere il metodo getContext () in android.support.v4.app.Fragment (versione 21.0.3) Android Studio
  • android soundpool raggruppa il trabocco
  • Ottieni le coordinate di un evento su Android
  • Android: Effettuare una chiamata dal widget di home screen
  • Android: Giri il listview utilizzando il suo android: id
  • Come get i dati da DialogFragment a un frammento?
  • 3 Solutions collect form web for “Arrestare un servizio in un'attività”

    Questo codice functionrebbe

     public class UsageRecorderService extends IntentService { private boolean mStop = false; public UsageRecorderService() { super("UsageRecorder"); } public final Object sLock = new Object(); public void onDestroy() { synchronized (sLock) { mStop = true; } } @Override protected void onHandleIntent(Intent intent) { while (true) { synchronized (sLock) { if (mStop) break; } UsageRecorder.recordUsages(this, false); SystemClock.sleep(10000); } } } 

    È ansible utilizzare stopService

     Intent intent = new Intent(MainActivity.this, UsageRecorderService.class); stopService(intent); 

    Inoltre consiglio di leggere la guida dei Servizi per capire cosa sta andando.

    Attività:

     sendBroadcast(new Intent(ACTION_STOP)); 

    IntentService

     public class UsageRecorderService extends IntentService { private static final String TAG = "UsageRecorderService"; String ACTION_STOP = "com.xxx.UsageRecorderService.ACTION_STOP"; boolean stop; public UsageRecorderService() { super("UsageRecorder"); } private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (ACTION_STOP.equals(intent.getAction())) { stop = true; } } }; @Override public void onCreate() { super.onCreate(); IntentFilter intentFilter = new IntentFilter(ACTION_STOP); registerReceiver(receiver, intentFilter); } @Override protected void onHandleIntent(Intent intent) { Log.i(TAG,"onHandleIntent"); while (true && !stop) { Log.i(TAG,"----running----"); //UsageRecorder.recordUsages(this, false); SystemClock.sleep(10000); } } @Override public void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); } } 

    Un IntentService è progettato per arrestarsi solo quando tutte le richieste presenti nella coda di lavoro sono state gestite. Android arresta il servizio dopo che tutte le richieste di avvio sono state gestite.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.