2013-09-17 2 views
10

мне нужно реализовать BroadcastReceiver в классе обслуживания я создал:Как реализовать BroadcastReceiver в классе обслуживания в Android?

public class MyService extends Service 

в этом классе я должен реализовать Моделирование Скачать с помощью темы - Сон, когда пользователь нажимает на кнопку в MyActivity классе, который реализует sendBroadcas(). Я не могу расширить класс службы до BroadcastReceiver, поскольку он уже распространяется на Service. Может ли кто-нибудь помочь мне разобраться, как реализовать этот механизм?

благодаря

+1

при нажатии на кнопку, запустите службу с помощью кнопки, и в службе регистрации вещательный приемник и sendbroadcast при запуске службы, поставить еще один класс, который расширяет broadcastreciever с использованием класса, который проходит службу – JRowan

ответ

18

Иметь BroadcastReceiver как класс верхнего уровня или как внутренний класс в вашей службе. И получите ссылку на получателя в вашем сервисе. Как это:

public class MyService extends Service { 
    BroadcastReceiver mReceiver; 

    // use this as an inner class like here or as a top-level class 
    public class MyReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // do something 
     } 

     // constructor 
     public MyReceiver(){ 

     } 
    } 

    @Override 
    public void onCreate() { 
     // get an instance of the receiver in your service 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("action"); 
     filter.addAction("anotherAction"); 
     mReceiver = new MyReceiver(); 
     registerReceiver(mReceiver, filter); 
    } 
} 
+1

Вам необходимо зарегистрировать ресивер! Это не сработает без него ... –

+0

@ PedroReisColaço Спасибо, я отредактировал свой ответ. –

+0

Будет ли этот широковещательный приемник также добавлен в манифест? С фильтрами намерений? – catalyst294

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