В каком методе запускать сервис?

В главной активити в методе onCreate я запускаю свой сервис. Далее сервис работает, но если я поворачиваю экран, то запуски сервиса накапливаются и потом друг за другом начинают выполняться, а хотелось бы чтобы только 1 раз при запуске главной активити. Я в сервисе в методе onStartCommand, чтобы не реагировать на повторные вызовы, выполняю работу потока 1 раз
if(startId == 1) { // не реагировать на повторные вызовы
            mTask.execute();
        }

Это правильно или как нужно делать, т.к. я новичок мне это не известно, кто знает, помогите пожалуйста?

// главная активити
public class mactiv extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);       

        startService(new Intent(this, mservis.class));
    }    
}

// сервис
public class mservis extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {       

        AsyncTask<Void, Integer, Void> mTask = new AsyncTask<Void, Integer, Void>() {
            @Override
            protected Void doInBackground(Void... params) {                

                return null;
            }            

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);               
                stopSelf();
            }
        };

        if(startId == 1) { // не реагировать на повторные вызовы, если не выполнять проверку, то поток при смене ориентации вызовется повторно т.к. сервис вызывается в методе onCreate главной активити
            mTask.execute();
        }
        
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate() {
        super.onCreate();        
    }
}
  • Вопрос задан
  • 414 просмотров
Решения вопроса 1
@IceJOKER
Web/Android developer
Сервис запускается лишь один раз и один раз срабатывает метод onCreate у сервиса, в остальных случаях работает метод onStartCommand, как это вам удалось один сервис несколько раз запустить непонятно О_О
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
aratj
@aratj
программер.
сервис как запускаете ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы