wake-up-neo.com

stoppe den Dienst in android

Hier habe ich einfaches Serviceprogramm ausprobiert. Dienst starten funktioniert einwandfrei und generiert Toast, Dienst beenden jedoch nicht. Der Code dieses einfachen Dienstes lautet wie folgt:

public class MailService extends Service {
    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }
    public void onCreate(){
        super.onCreate();
        Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
    }
    public void onDestroyed(){
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
        super.onDestroy();
    }
}

Der Code der Aktivität, von der aus dieser Service aufgerufen wird, lautet wie folgt:

public class ServiceTest extends Activity{
    private Button start,stop;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.service_test);

        start=(Button)findViewById(R.id.btnStart);
        stop=(Button)findViewById(R.id.btnStop);

        start.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startService(new Intent(ServiceTest.this,MailService.class));
            }
        });
        stop.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                stopService(new Intent(ServiceTest.this,MailService.class));
            }
        });
    }
}

Hilf mir, den Dienst mit dieser Stopptaste zu beenden, die Toast mit der Methode onDestroy () generiert. Ich habe hier schon viele Posts zu Stop-Service-Problemen gesehen, aber nicht zufriedenstellend, so dass ich eine neue Frage stelle. Hoffe auf eine zufriedenstellende Antwort.

71
Ravi Bhatt
onDestroyed()

ist falscher Name für

onDestroy()  

Haben Sie nur in dieser Frage oder auch in Ihrem Code einen Fehler gemacht?

45
kreker

Dieser Code funktioniert für mich: Überprüfen Sie diese Link
Dies ist mein Code, wenn ich den Dienst in der Aktivität stoppe und starte

case R.id.buttonStart:
  Log.d(TAG, "onClick: starting srvice");
  startService(new Intent(this, MyService.class));
  break;
case R.id.buttonStop:
  Log.d(TAG, "onClick: stopping srvice");
  stopService(new Intent(this, MyService.class));
  break;
}
}
 }

Und in der Serviceklasse:

  @Override
public void onCreate() {
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onCreate");

    player = MediaPlayer.create(this, R.raw.braincandy);
    player.setLooping(false); // Set looping
}

@Override
public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onDestroy");
    player.stop();
}

GLÜCKLICHE CODIERUNG!

12
dondondon

Um den Dienst zu stoppen müssen wir die Methode stopService() verwenden:

  Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class);
  //startService(myService);
  stopService(myService);

dann wird die Methode onDestroy() im Dienst aufgerufen:

  @Override
    public void onDestroy() {

        Log.i(TAG, "onCreate() , service stopped...");
    }

Hier ist ein vollständiges Beispiel einschließlich der Vorgehensweise zum Beenden des Dienstes.

11
Jorgesys