2014-01-26 2 views
0

Мне нужно отправить некоторые данные в мою службу при запуске приложения. Я поместил данные в Intent, литой sendBroadcast(intent) в onCreate метод моей деятельности. Поэтому моя служба не получает никаких намерений. Но если я использую Handler.post с обычным Runnable в onCreate все работает нормально. Может ли кто-нибудь объяснить мне такое странное поведение?Поведение sendBroadcast

Не работает на всех:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    broadcastIntent = new Intent(BROADCAST); 
    broadcastIntent.putStringArrayListExtra("URLs", alURLS); 
    sendBroadcast(broadcastIntent); 
} 

отлично работает:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    broadcastIntent = new Intent(BROADCAST); 
    broadcastIntent.putStringArrayListExtra("URLs", alURLS); 
    hDelayedPost = new Handler(); 
    hDelayedPost.post(rHandleDelayedSendBroadcast); 
} 

private Runnable rHandleDelayedSendBroadcast = new Runnable() { 
    @Override 
    public void run() { 
     sendBroadcast(broadcastIntent); 
    } 
}; 

ответ

1

Так что моя служба не получает никаких намерений

услуги не получают широковещательные , BroadcastReceivers получение радиовещание.

UPDATE: Предположительно, ваш Service еще не работает в onCreate() вашей деятельности, и вы вызываете startService() то между onCreate() и когда вашей задержкой sendBroadcast() называется.

+0

Да, это то, что я на самом деле имел в виду. – Outofdate

+0

@Outofdate: Как вы регистрируете свой «BroadcastReceiver»? – CommonsWare

+0

В моем сервисе override метод 'onCreate':' registerReceiver (broadcastReceiver, новый IntentFilter (MainActivity.BROADCAST)); ' – Outofdate

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