My Photo

« 王座戦第2局と順位戦C級2組4回戦 | Main | 2点では物足りない、五輪予選マレーシア戦 »

September 21, 2011

Androidアプリ開発メモ021:サービス

サービスの開始・停止

サービスの開始はContext#startService()で行う。

Intent intent = new Intent(this, com.example.myservice.MyService.class);
startService(intent);

サービスの停止はContext#stopServie()で行うか、サービス自身が stopSelf() または stopSelfResult() を呼ぶ。
Intent intent = new Intent(this, com.example.myservice.MyService.class);
stopService(intent);

サービスの実装

Serviceクラスを継承し、以下のメソッドをオーバーライドする。

public void onCreate()
サービス生成時に呼ばれる。

public int onStartCommand (Intent intent, int flags, int startId) 
startService(Intent)によってサービスが開始されたときに呼ばれる。
引数:
  intent  startService(Intent)に供給される(供給された?)Intent、与えられたように(?)。サービスのプロセスが消えたしまった後に再起動されている場合、nullの可能性がある。そして明らかにそれ(onStartCommand()?)はSTART_STICKY_COMPATIBILITY以外なら何でも返してしまった。
  flags  この開始リクエストの追加データ。現在は0 または START_FLAG_REDELIVERY または START_FLAG_RETRY。
  startId  開始するためのこの特定のリクエストを表しているユニークな整数。stopSelfResult(int) で使われる。
戻り値:(直訳)「戻り値はシステムがサービスのカレントの起動状態のために使うべきセマティクス(=動作?)を示す。」なんのこっちゃ?
以下は全く自信なし。
システムがサービスが停止したときどうするかを示すってことか?
サービスを明示的に開始して明示的に終了する場合はSTART_STICKYを返す。この場合、明示的に終了される前にサービスがkillされると、サービスが再起動させられる。
START_STICKY以外(START_NOT_STICKY,etc...)を返すと、サービスがkillされたらそのまま起動状態から取り除かれる。

public void onDestroy()
サービス解放時に呼ばれる。

public abstract IBinder onBind (Intent intent) 
バインド(アクティビティとサービスを結びつける仕組み)を使う場合にサービスへの通信チャンネルを返す。バインドを使用しない場合はnullを返す。

onStart(Intent,int)は廃止予定。

stopSelfResult()はサービスが自身を停止するのに使う。

public final boolean stopSelfResult(int startId)
それ(サービス?)が開始された最新の時間がstartIDであった場合はサービスを停止します。これは、この特定のサービスのためにstopService(Intent)を呼び出した場合と同じですが、安全にあなたがまだOnStart(Intent, int)で見ていないクライアントからの開始要求がある場合の停止を回避することができます。
この関数の呼び出し順序には注意せよ。以前に受信したIDのためにこの関数を呼び出す前に、直前に受信したIDでこの関数を呼び出す場合、サービスがすぐにとにかく停止される。複数のIDをout of orderで処理することになる可能性がある場合(例えば分かれたスレッド上で複数のIDがディスパッチされるなど)は、次にあなたがそれを受け取ったのと同じ順序でそれらを停止する責任がある。
戻り値:startIdが最後の開始リクエストとマッチしてサービスが停止する場合true。それ以外はfalse。

参考サイト:
Serviceを使う(1) LocalServiceによる常駐型アプリ:Tech Booster
AndroidのServiceについて - adsaria mood
Android: Serviceがヌルポで落ちる << えふログ

« 王座戦第2局と順位戦C級2組4回戦 | Main | 2点では物足りない、五輪予選マレーシア戦 »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/52794000

Listed below are links to weblogs that reference Androidアプリ開発メモ021:サービス:

« 王座戦第2局と順位戦C級2組4回戦 | Main | 2点では物足りない、五輪予選マレーシア戦 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof