остановить сервис в андроид - PullRequest
70 голосов
/ 05 апреля 2011

Здесь я попробовал простую сервисную программу.Служба запуска работает нормально и генерирует тост, а служба остановки - нет.Код этого простого сервиса приведен ниже:

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

Код действия, из которого вызывается данный сервис, выглядит следующим образом:

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

Помогите мне остановить сервис скнопка остановки, которая генерирует тост в методе onDestroy ().Я уже видел много сообщений о проблеме остановки сервиса здесь, но не удовлетворительно, поэтому отправляю новый вопрос.Надеюсь на удовлетворительный ответ.

Ответы [ 3 ]

45 голосов
/ 24 января 2012
onDestroyed()

неверное имя для

onDestroy()  

Вы допустили ошибку только в этом вопросе или в своем коде тоже?

12 голосов
/ 15 октября 2015

Этот код работает для меня: проверьте эту ссылку
Это мой код, когда я останавливаюсь и запускаю службу в действии

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

А в классе обслуживания:

  @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();
}

СЧАСТЛИВОЕ КОДИРОВАНИЕ!

10 голосов
/ 04 апреля 2017

Для остановки службы мы должны использовать метод stopService():

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

, тогда метод onDestroy() в службе называется:

  @Override
    public void onDestroy() {

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

Вот полный пример , включая способ остановки службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...