Итак, я работаю над Android-приложением для школьного проекта и обнаружил странную ошибку в конце разработки.Частью приложения является Служба, которая работает в фоновом режиме и время от времени регистрируется на сервере, но должна быть возможность запустить службу в фоновом режиме или использовать ручные проверки.Чтобы избежать дублирования кода, я попытался передать Intent сервису, когда он начинается с логического значения, типа «Принудительно обновить один раз, затем остановить».Однако My Service, похоже, не получает это значение.
Код, который запускает службу:
Intent intent = new Intent(this, EmpCheckinService.class);
intent.putExtra("singleCheckInOnly", true);
intent.putExtra("locationString", location);
startService(intent);
И код в классе Service:
// This is the old onStart method that will be called on the pre-2.0
// platform. On 2.0 or later we override onStartCommand() so this
// method will not be called.
@Override
public void onStart(Intent intent, int startId) {
examineIntent(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
examineIntent(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
private void examineIntent(Intent intent) {
try {
singleCheckInOnly = intent.getExtras().getBoolean("singleCheckInOnly", false);
locationString = intent.getExtras().getString("locationString");
} catch (Exception e) {
// Don't need to do anything here, just prevent from crashing if the keys aren't found
}
}
Как вы можете видеть, у меня есть onStart и onStartCommand, которые позволяют ему работать на устройствах 1.5 или 2.1+, но он никогда не запускает ни одну из этих функций.Кто-нибудь может указать мне правильное направление здесь?
РЕДАКТИРОВАТЬ: Я думаю, что нашел проблему.Вызывается ли onCreate перед onStartCommand?