Androidでのサービスの使用

2343 ワード

ServiceはAndroidシステムのActivityタイプのコンポーネントで、自分で起動することも、ユーザーと対話することもできず、バックグラウンドでしか実行できません.
ServiceはActivityと同様に、onCreate()、onStart()、onDestory()メソッドという独自のライフサイクルを持ち、onCreate()メソッドからonDestory()メソッドに止まります.
Serviceには、1、ローカルサービス:プログラム内部用2、リモートサービス:Androidシステム内部用各アプリケーション間
前者はアプリケーション独自の時間のかかるタスクを実現するために使用され、後者は他のアプリケーションに多重化されます.
サービスを実装するには、startService()とbindService()の2つの起動方法でサービスクラスを継承する必要があります.対応する終了方法は、stopService()とunbindService()です.
startService()メソッドはサービスを開始し、呼び出し者とサービスとの間には関連がなく、呼び出し者が終了しても、サービスは任意に実行されます.
bindService()メソッドはサービスを開始し、呼び出し者はサービスにバインドされ、呼び出し者が終了するとサービスは終了します.
サービスの使い方は以下の通りです.使用する前にAndroid Mainfestでなければならないことを覚えておいてください.xmlにこのサービスを登録するのは、Activityを登録するのと同じです.
Javaファイル定義サービスクラスを新規作成します.実装するバックグラウンドサービス機能をこのクラスに書けばいいです.
/Service  
package com.example.android_test;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class CountService extends Service{
    private boolean threadable  = true;
    private int count;
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        new Thread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while(threadable)
                {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    count ++;
                    Log.v("test", "count is:"+count);
                }
            }
        }).start();
    }
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        //    
        threadable = false;
    }
}

プライマリjavaファイルでservicesをオンおよびオフにします.
//    
Intent intent = new Intent(MainActivity.this,CountService.class);
startService(intent);
//    
Intent intent = new Intent(MainActivity.this,CountService.class);
stopService(intent);