2011-11-18 3 views
1

Я просто не могу понять, что здесь не так.Служба не получает намерение/дополнительные услуги

Activity.java:

... 
Intent intent = new Intent(Activity.this, Service.class); 
intent.putExtra(Service.KEY_TEST, "123456789"); 
startService(intent); 
... 

Service.java:

... 
private Intent intent; 
public static final String KEY_TEST; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.d("TEST", intent.getStringExtra(KEY_TEST)); // when I remove this line, 
    // it works, otherwise gives NullPointerException and FC's 
} 

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

Служба явно не получает дополнительные услуги, посылаемые от деятельности. Когда я пытаюсь получить какие-либо дополнения, которые я отправил раньше, сила приложения закрывается, и LogCat предоставляет исключение NullPointerException. Когда я удаляю строку, где я пытаюсь получить дополнительные функции, приложение не заставляет закрывать, но я также явно не получаю дополнения.

+0

какие ошибки вы получаете? Что происходит? Что не происходит? Трудно сказать, что вы хотите с этим вопросом. –

+0

Прочтите название моего вопроса и мой комментарий в коде. Линия 'Log.d ...' принудительно закрывает приложение. LogCat скулит о NullPointerException, поэтому дополнительные функции не принимаются. Когда я удаляю линию, сила не закрывается, но я, очевидно, тоже не получаю свои дополнения. –

+0

Вы должны написать его конкретно в своем вопросе, а не в заголовке или в блоке кода. –

ответ

5

положить эту линию Log.d("TEST", intent.getStringExtra(KEY_TEST)); в,

onStartCommand(Intent intent, int flags, int startId) метод ..

EDIT:

Для получения дополнительной информации, как следует за срок службы cyclces, Посмотрите на эту Service Lifecycle.

+0

Не могу поверить, что я сделал такое движение noob. Наверное, это то, что происходит после 3 часов безостановочного кодирования. Работает как шарм. –

+0

Был 3-минутный срок, прежде чем я смог принять ваш вопрос. Почему в моем случае не работает работа в onCreate? –

+0

Поскольку ваше намерение получено службой в методе onStartCommand(), а не в onCreate(), поэтому. Happy Coding .. :-) – user370305

0

onStartCommand() бывает после сверхуCreate() способ.

 Смежные вопросы

  • Нет связанных вопросов^_^