Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dive Into Android. Сервисы.

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Dive Into Android. Сервисы.

Avatar for Alex Korovyansky

Alex Korovyansky

November 03, 2013
Tweet

More Decks by Alex Korovyansky

Other Decks in Programming

Transcript

  1. 5 Service • Service - компонент Android приложения • «Функционал»

    • IPC • Выполнение фоновых операций
  2. 6 Замечания • Методы Service выполняются в петле • По

    умолчанию Service не создается в отдельном процессе • Service значительно повышает шансы приложения в борьбе за выживание • Сам по себе Service очень простой механизм
  3. 7 Объявление сервиса в xml <manifest ... > ... <application

    ... > <service android:name=".ExampleService" /> ... </application> </manifest>
  4. 8 Код сервиса public class ExampleService extends Service { @Override

    public void onCreate() { // создание сервиса } @Override public int onStartCommand(Intent intent, int flags, int startId) { // Сервис запущен вызовом startService() return mStartMode; } @Override public IBinder onBind(Intent intent) { // Клиент связался с сервисом через bindService() return mBinder; } @Override public boolean onUnbind(Intent intent) { // Все клиенты разорвали связь с сервисом через unbindService() return mAllowRebind; } @Override public void onDestroy() { // Сервис более не используется и будет уничтожен } }
  5. 9 Два сценария • Started Service - явный запуск и

    остановка сервиса. Обычно без обратной связи • Bounded Service - неявный запуск и остановка сервиса. Обычно клиент-серверная модель • Возможен смешанный сценарий
  6. 11 IPC • Механиз сервисов предоставляет возможность межпроцессного взаимодействия (IPC)

    • IPC может быть обеспечено за счет класса Messenger или подхода AIDL <service android:name=".app.MessengerService" android:process=":remote" />
  7. 12 Примеры сервисов • Загрузчик файла • Музыкальный плеер •

    Клиент для IM • Ядро Qt под Android • Reachability Checker • ...