2014-10-13 4 views
2

Я смущен:Is intent.getExtras.getInt() То же самое, что и intent.getIntExtra()?

intent.getExtras.getInt() такой же, как intent.getIntExtra()?

Если я начну свою работу с START_REDELIVER_INTENT, будут ли включены дополнительные услуги ?

Я получаю NullPointerException при перезагрузке моей разбитой службы, которые я нахожу странным ....

ответ

4

С Intent исходного кода:

private Bundle mExtras; 

// [...] 

public int getIntExtra(String name, int defaultValue) { 
    return mExtras == null ? defaultValue : 
    mExtras.getInt(name, defaultValue); 
} 

public Bundle getExtras() { 
    return (mExtras != null) 
     ? new Bundle(mExtras) 
     : null; 
} 

Так что да. То же самое, кроме getExtras(), может возвращать null.

+0

Почему новый Bundle (mExtras), когда mExtras уже является пакетом? – JohnyTex

+1

Чтобы вернуть копию пакета, исходный пакет mExtras не изменяется. – ToYonos

1

Они не совсем идентичны. Как вы узнаете, первый вариант вызовет NPE, если intent.getExtras() возвращает null. Второй вариант выполняет свою нулевую проверку и возвращает значение по умолчанию, если дополнительный нет.

Я не могу предположить, почему вы не получаете ожидаемые дополнительные функции, не видя больше кода.

+0

Я понимаю. Хотя это ожидаемое поведение, что дополнительные функции также переадресовываются при перезапуске службы? Верный? – JohnyTex

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

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