Androidでのサービスの使用
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ファイル定義サービスクラスを新規作成します.実装するバックグラウンドサービス機能をこのクラスに書けばいいです.
プライマリjavaファイルでservicesをオンおよびオフにします.
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);