Липкий сервис не перезапускается при создании в пользовательском объекте

У меня был объект Singleton, который имел привязанный сервис. Я хотел, чтобы он перезапустился, и когда я запускаю свое приложение из модуля запуска, синглтон-объект инициализируется и привязывается к этому существующему экземпляру службы.

Вот код для создания и привязки сервиса в синглтоне:

public class MyState {

    private static MyState sState;

    private MyService mService;
    private Context mContext;
    private boolean mBound = false;


    private ServiceConnection mConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            MyService.MyBinder binder = (MyService.MyBinder) service;
            mService = binder.getService();
            mBound = true;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            mBound = false;
        }
    };

    public static MyState get(Context context) {
        if (sState == null) {
            sState = new MyState(context);
        }
        return sState;
    }

    public MyState(Context context) {
        mContext = context.getApplicationContext();
        startService();
    }

    private void startService() {
        Intent intent = new Intent(mContext, MyService.class);
        mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
        // this won't create another instance of service, but will call onStartCommand
        mContext.startService(intent);
    }
}

А вот код службы инсайда

public class MyService extends Service {

    private final IBinder mBinder = new MyBinder();

    public class MyBinder extends Binder {
        MyService getService() {
            return MyService.this;
        }
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

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

    // this method is called by singleton object to stop service manually by user                                                                                                              
    public void stop() {
        stopSelf();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // some cleanup code here                                                                                                                                                              
    }
}

К сожалению, когда я удаляю свое приложение в списке задач, эта служба никогда не перезапускается. В этом случае метод onDestroy службы никогда не вызывается.

Я перенес привязку на действие, при котором пользователь может взаимодействовать со службой, и неожиданно оно заработало, как я и ожидал. Я попытался вызвать создание сервиса, используя контекст приложения внутри моей деятельности, и он все еще работает.

Отличается ли запуск службы от активности от запуска обычного Java-объекта?

Ответы на вопрос(1)

Ваш ответ на вопрос