Your SlideShare is downloading. ×
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Android Hacks - Hack26
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Android Hacks - Hack26

555

Published on

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。 …

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。

http://www.oreilly.co.jp/books/9784873114569/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
555
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ANDROID HACKS #26 サービスを使う 担当: Tatsuki Higashi Twitter : @htk16 09/19/11
  • 2. この資料について
    • この資料は下記の本をベースに勉強会で作成した資料です。
      • 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)
    • この本の紹介ページが下記にあります。
      • http://www.oreilly.co.jp/books/9784873114569/
    09/19/11
  • 3. アジェンダ
    • サービスとは
    • サービスを作成する
    • サービスを呼び出す
    • サービスに接続する
    • Hack をさらに Hack する
      • サービスから Activity を呼び出す
      • Callback を使う
    09/19/11
  • 4. 1. サービスとは 09/19/11
  • 5. 1. サービスとは
    • サービス?
      • アプリケーションコンポーネントの一つ
      • ユーザとのインタラクションを伴わない機能
      • 長時間に渡る処理を行うことも想定
      • 他のアプリケーションに機能群として提供することができる
    • サービスに関するよくある間違い
      • 切り離されたプロセスではない
        • 起動したアプリケーションのプロセス内で動作する
      • スレッドではない
        • 起動したアプリケーションの main thread で動作する
    09/19/11
  • 6. 1. サービスとは
    • サービス利用の流れ
      • サービスの起動 (3. サービスを呼び出す)
      • サービスに接続 (4. サービスに接続する)
      • サービスのメソッドを呼び出す (4. サービスに接続する )
    • 接続可能なサービス
      • クライアントと同じプロセスで動作するサービス
        • 全ての public メソッドが利用可能
      • クライアントと異なるプロセスで動作するサービス
        • AIDL (Android Interface Definition Language) で 指定された public メソッドのみを利用可能
    09/19/11
  • 7. 2. サービスを作成する 09/19/11
  • 8. 2. サービスを作成する
    • Service クラスの派生クラスとして作成する
      • Service.onCreate
      • サービスが最初に作成されたときに呼ばれる
      • Service.onStartCommand
        • パラメータ付きでサービスが作成されたときに呼ばれる(?)
      • Service.onStart
      • サービス呼び出し元が Context.startService を
      • 呼び出したときに呼ばれる
      • Service.onBind
        • サービスに接続されたときに呼ばれる
      • Service.onDestroy
        • サービスが破棄されるときに呼ばれる
    09/19/11
  • 9. 2. サービスを作成する 09/19/11 150 ミリ秒毎にインテントを ブロードキャストする
  • 10. 2. サービスを作成する
    • AIDL を使用したサービスの作成
      • 例 : ImyService サービスの作成
      • ImyService.aidl ファイルを作成
      • 対応する ImyService.java が生成される
        • Binder の派生クラス ImyService.Stub が定義される
        • ImyService.Stub の派生クラスで ImyService インターフェースの メソッドを実装する
    09/19/11 提供するメソッド名を指定
  • 11. 2. サービスを作成する 09/19/11 ImyService.stopService を実装 接続してきたクライアントには ImyServiceBinder を返す
  • 12. 3. サービスを呼び出す 09/19/11
  • 13. 3. サービスを呼び出す
    • Context.startService(Intent i)
    • インテント i で表されるサービスを呼び出す(起動する)
    • Content.stopService
    • 動作中のサービスを停止する
    09/19/11
  • 14. 2. サービスを呼び出す
    • サービスを終了させる
      • 原則的には以下のメソッドを呼ばないと終了しない
        • Context.stopService 外部から終了させる
        • Service.stopSelf 自ら終了
      • メモリ不足の際に,システムに停止させられる可能性がある
        • (メモリが空いたら?)システムによって再起動される
        • 再起動に失敗,例外を投げるなどして停止した場合は 再起動は行われない
          • その場合は Context.startService などで起動する
    09/19/11
  • 15. 3. サービスを呼び出す 09/19/11 UpdateService へのインテントを作成 UpdateService の起動
  • 16. 4. サービスに接続する 09/19/11
  • 17. 4. サービスに接続する
    • Content.bindService(Intent service, ServiceConnection conn int flag)
      • サービスへ接続する
      • service: 接続するサービスへのインテント
      • conn: サービスに接続,離脱した際の callback interface
        • ServiceConnection.onServiceConnected(ComponentName name, IBinder binder)
          • サービスに接続したときに呼ばれる
            • name: サービス名
            • binder: サービスへの接続チャネル
        • ServiceConnection.onServiceDisconnected(ComponentName name)
          • サービスとの接続が切れたときに呼ばれる
    09/19/11
  • 18. 4. サービスに接続する
    • Content.bindService(Intent service, ServiceConnection conn int flag)
      • flag: 接続する際の動作
        • BIND_AUTO_CREATE:
          • 接続時にサービスが起動指定なければ起動させる
        • BIND_DEBUG_UNBIND
        • BIND_NOT_FOREGROUND
    09/19/11
  • 19. 4. サービスに接続する 09/19/11 UpdateService との接続を行う際の callback interface UpdateService への通信チャネル
  • 20. 4. サービスに接続する 09/19/11 UpdateService.stopService を呼び出し
  • 21. 5. Hack をさらに Hack する 09/19/11
  • 22. 5. Hack をさらに Hack する
    • 申し訳ありません,ここで力尽きました
    09/19/11
  • 23. 参考 URL
    • Android Developers | Services
      • http://developer.android.com/reference/android/app/Service.html
    • Android Developers | Binder
      • http://developer.android.com/intl/ja/reference/android/os/Binder.html
    09/19/11

×