Работа приложений в фоне осуществляется благодаря BroadcastReceiver и Service.
BroadcastReceiver это объект, который начинает выполнять действия, по получению какого нибудь сигнала (Intent). Service в отличии от BroadcastReciever работает сразу после того как его запустили. Сегодня речь пойдет о Broadcast Receiver.
Для создания броадкастера нужно создать класс, который наследуется от BroadcastReceiver и переопределить метод onReceive. Этот метод вызывает, когда броадкастер получает Intent.
В нашем примере броадкастер будет показывать всплывающее сообщение, конечно там можно сделать что-то более полезное.
public class SimpleBroadcater extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Broadcaster",Toast.LENGTH_SHORT).show(); }
* This source code was highlighted with Source Code Highlighter.
Броадкастер может слушать системные Intent, которые рассылаются всем и те которые мы будем вручную ему посылать. Теперь надо зарегестрировать броадкастер в системе это возможно сделать двумя способами созданием тега в манифесте приложения или вызовом метода registerReceiver из контекста, мы сделаем первым способом.
Посылка интентов броадкастерам осуществляется так
public class MainActivity extends Activity {
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = getApplicationContext();
Button button = (Button) findViewById(R.id.btn1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
context.sendBroadcast(new Intent(context,SimpleBroadcater.class));
}
});
}}
* This source code was highlighted with Source Code Highlighter.
Также можно подписаться на системные интенты, для этого в манифесте надо использовать тег так.
<receiver android:name=".SimpleBroadcater" android:label="Simple">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
* This source code was highlighted with Source Code Highlighter.
исходники проекта тут
Комментариев нет:
Отправить комментарий