Создание сервиса в Android

Я создаю свое первое приложение для Android, и мне нужно использовать сервис. Пользовательский интерфейс будет иметь флажок (CheckBoxPreference), который будет использоваться для включения / выключения службы, и служба будет доступна только для моего приложения (нет необходимости делиться ею).

Пока что пользовательский интерфейс для этой функции готов, и я знаю, как реагировать на событие, но я не знаю, как создать сервис или как к нему подключиться.

Идея заключается в том, что служба продолжает прослушивать события и отвечать на них в фоновом режиме, а приложение используется только для включения / выключения или для изменения некоторых настроек.

Я искал учебники в Интернете, но я, кажется, не понимаю процесс.

2 ответа

Решение
CheckBox checkBox =
    (CheckBox) findViewById(R.id.check_box);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            startService(new Intent(this, TheService.class));
        }
    }
});

И сервис:

public class TheService extends Service {   

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show();
    }
}

В Android Studio щелкните пакет правой кнопкой мыши и выберите "Создать | Сервис | Обслуживание. Теперь добавьте этот метод:

@Override
int onStartCommand(Intent intent, int flags, int startId) {
    // Your code here...
    return super.onStartCommand(intent, flags, startId);
}

Примечание: onStart устарела.

Чтобы запустить службу: Из метода onCreate действия (или метода onReceive получателя вещания):

Intent i = new Intent(context, MyService.class);
context.startService(i);
Другие вопросы по тегам