Hier habe ich ein einfaches Serviceprogramm ausprobiert. Der Startdienst funktioniert einwandfrei und generiert Toast, der Stoppdienst 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 Dienst 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));
}
});
}
}
Helfen Sie mir, den Dienst mit dieser Stopp-Schaltfläche zu beenden, die Toast in der onDestroy () -Methode generiert. Ich habe hier bereits viele Posts zum Thema Stop-Service-Problem gesehen, die jedoch nicht zufriedenstellend sind. Hoffe auf zufriedenstellende Antwort.
stopService(serviceIntent)
nichtAntworten:
onDestroyed()
ist falscher Name für
onDestroy()
Haben Sie nur in dieser Frage oder auch in Ihrem Code einen Fehler gemacht?
quelle
intent = new Intent(ServiceTest.this,MailService.class)
Start" verwenden und dieselbe Absicht zum Starten und Stoppen des Dienstes wie "startService (Absicht)" und "stopService" (Absicht) verwenden.@Override
Anmerkungen verwenden.Dieser Code funktioniert für mich: Überprüfen Sie diesen Link
Dies ist mein Code, wenn ich den Dienst in 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!
quelle
Um den Dienst zu beenden , müssen wir die folgende Methode verwenden
stopService()
:Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class); //startService(myService); stopService(myService);
dann heißt die Methode
onDestroy()
im Dienst:@Override public void onDestroy() { Log.i(TAG, "onCreate() , service stopped..."); }
Hier finden Sie ein vollständiges Beispiel, wie Sie den Dienst beenden können.
quelle