Androidのサービス紹介
詳細
サービス紹介
1.Serviceはandroidの4つのコンポーネントがActivityと最も似ている場所であり、実行可能なプログラムを表しています.2.サービス特徴:a)バックグラウンドで運行し、一般的に比較的時間のかかる任務を処理する;b)実際のインターフェースがない;c)他のコンポーネントと対話することができる.d)例えば、音楽の処理、ファイルのダウンロードなど;3.サービスの宣言周期:a)3段階:作成-開始---bを破棄)OnCreate();サービス宣言サイクルの開始は、サービスの初期化を完了します. c)OnStartCommand(); サービス宣言サイクルが開始し、対応する停止関数d)OnDestory()がない.サイクルの終了を宣言し、サービスが占有するリソースを解放します.4.ヒント:1つのサービスは1回だけ作成され、1回は破棄されますが、複数回起動できます.5.サービスの起動方法:a)Conetext.startService(); b)Contenxt.bindService(); 6.ライフサイクルの図解:7.起動サービス:a)サービスと呼び出しサービスのコンポーネントが同じアプリケーションにある場合、明示的な起動または暗黙的な起動を使用することができ、明示的に使用しやすく、コードが簡潔である.b)サービスと呼び出したサービスのコンポーネントが異なるアプリケーションにある場合、暗黙的に起動するしかない.8.サービス停止:a)StopService(intent);一度onDestory()を呼び出します.9.ローカルサービスとサービスとの通信をバインドする:a)bindService()、方法はバインドを実現し、unbindService()はバインドbを解除する)bindService(Intent service、ServiceConnection conn、int flags);パラメータ説明i.serviceはIntentで起動するサービスを指定します. ii.connこのオブジェクトは、アクセス者とサービス間のリンク状況を傍受するために使用され、アクセス者とサービス間のリンクが正常にリンクされた場合にonServiceconnected()がコールバックされます.リンク解除時にonServiceDisconnected()メソッドを呼び出すiii.flags:バインド時に自動的にサービスを作成するかどうかを指定します.0は自動作成しないことを示します.BIND_AUTO_CREATEZ自動作成;c)ヒント:ServiceConnectionオブジェクトのonServiceconnected()にIBinderオブジェクトがあり、そのオブジェクトを使用してServicesとの通信を実現します.
ケース・コードは次のとおりです.
mainfestプロファイルは次のとおりです.
メイン・プログラム・エントリ:
[b]サービス:方式一[/b]
サービス方式2:バインドサービス service.rar (1.3 MB) ダウンロード回数:6
サービス紹介
1.Serviceはandroidの4つのコンポーネントがActivityと最も似ている場所であり、実行可能なプログラムを表しています.2.サービス特徴:a)バックグラウンドで運行し、一般的に比較的時間のかかる任務を処理する;b)実際のインターフェースがない;c)他のコンポーネントと対話することができる.d)例えば、音楽の処理、ファイルのダウンロードなど;3.サービスの宣言周期:a)3段階:作成-開始---bを破棄)OnCreate();サービス宣言サイクルの開始は、サービスの初期化を完了します. c)OnStartCommand(); サービス宣言サイクルが開始し、対応する停止関数d)OnDestory()がない.サイクルの終了を宣言し、サービスが占有するリソースを解放します.4.ヒント:1つのサービスは1回だけ作成され、1回は破棄されますが、複数回起動できます.5.サービスの起動方法:a)Conetext.startService(); b)Contenxt.bindService(); 6.ライフサイクルの図解:7.起動サービス:a)サービスと呼び出しサービスのコンポーネントが同じアプリケーションにある場合、明示的な起動または暗黙的な起動を使用することができ、明示的に使用しやすく、コードが簡潔である.b)サービスと呼び出したサービスのコンポーネントが異なるアプリケーションにある場合、暗黙的に起動するしかない.8.サービス停止:a)StopService(intent);一度onDestory()を呼び出します.9.ローカルサービスとサービスとの通信をバインドする:a)bindService()、方法はバインドを実現し、unbindService()はバインドbを解除する)bindService(Intent service、ServiceConnection conn、int flags);パラメータ説明i.serviceはIntentで起動するサービスを指定します. ii.connこのオブジェクトは、アクセス者とサービス間のリンク状況を傍受するために使用され、アクセス者とサービス間のリンクが正常にリンクされた場合にonServiceconnected()がコールバックされます.リンク解除時にonServiceDisconnected()メソッドを呼び出すiii.flags:バインド時に自動的にサービスを作成するかどうかを指定します.0は自動作成しないことを示します.BIND_AUTO_CREATEZ自動作成;c)ヒント:ServiceConnectionオブジェクトのonServiceconnected()にIBinderオブジェクトがあり、そのオブジェクトを使用してServicesとの通信を実現します.
ケース・コードは次のとおりです.
mainfestプロファイルは次のとおりです.
メイン・プログラム・エントリ:
package com.sun.service;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
//
private Button start, stop, bind, unbind, result; // :
private ServiceTwo serviceTwo; //
//
private ServiceConnection serviceConnection = new ServiceConnection() {
//
public void onServiceConnected(ComponentName name, IBinder service) {
// -- ServiceTwo
serviceTwo = ((ServiceTwo.MyBinder)service).getService();
Log.i("msg"," serviceTwo ");
}
//
public void onServiceDisconnected(ComponentName name) {
}
};
/**
*
*/
public void init() {
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
bind = (Button) findViewById(R.id.bind);
unbind = (Button) findViewById(R.id.unbind);
result = (Button) findViewById(R.id.result);
}
//
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.init(); //
//
start.setOnClickListener(listener);
stop.setOnClickListener(listener);
bind.setOnClickListener(listener);
unbind.setOnClickListener(listener);
result.setOnClickListener(listener);
}
//
private OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
int id = v.getId();
if (id == R.id.start) {//
startAction();
return;
}
if (id == R.id.stop) { //
StopAction();
return;
}
if (id == R.id.bind) { //
bindAction();
return;
}
if (id == R.id.unbind) { //
unbindAction();
return;
}
if (id == R.id.result) { //
return;
}
}
};
/**
* StartService
*/
public void startAction(){
Intent intent = new Intent(MainActivity.this,ServiceOne.class);
startService(intent); //
}
/**
* StopService
*/
public void StopAction(){
Intent intent = new Intent(MainActivity.this,ServiceOne.class);
stopService(intent);
}
/**
* bindService
*/
public void bindAction(){
Intent intent = new Intent();
intent.setAction("sun.bind.service");
bindService(intent, serviceConnection,BIND_AUTO_CREATE);
}
/**
* unbindService
*/
public void unbindAction(){
unbindService(serviceConnection); //
}
/**
*
*/
public void getResultAction(){
}
}
[b]サービス:方式一[/b]
package com.sun.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
/**
*
*
* @author Administrator
*
*/
public class ServiceOne extends Service {
/**
*
*/
public void onCreate() {
super.onCreate();
Log.i("msg", "onCreate()...");
Toast.makeText(ServiceOne.this, "onCreate()...", Toast.LENGTH_LONG).show();
}
/**
*
*/
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("msg", "onStartCommand()...");
Toast.makeText(ServiceOne.this, "onStartCommand()...", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
/**
*
*
*/
public void onDestroy() {
Log.i("msg", "onDestroy()...");
Toast.makeText(ServiceOne.this, "onDestroy()...", Toast.LENGTH_LONG).show();
super.onDestroy();
}
/**
*
*/
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.i("msg", "onStart()...");
Toast.makeText(ServiceOne.this, "onStart()...", Toast.LENGTH_LONG).show();
}
/**
*
*/
public IBinder onBind(Intent intent) {
return null;
}
}
サービス方式2:バインドサービス
package com.sun.service;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
/**
* --
* : ,
* @author Administrator
*
*/
public class ServiceTwo extends Service {
// Binder
public class MyBinder extends Binder{
public ServiceTwo getService(){
Log.i("msg","getService()...");
return ServiceTwo.this; //
}
}
private MyBinder myBinder = new MyBinder(); //
/**
* ,
*/
public void onCreate() {
super.onCreate();
Log.i("msg","onBind() oncreate()...");
}
/**
* ,
* ,
*/
public IBinder onBind(Intent intent) {
Log.i("msg","onBind()...");
return myBinder; // , Binder
}
/**
*
*/
public boolean onUnbind(Intent intent) {
Log.i("msg","onUnbind()...");
return super.onUnbind(intent);
}
/**
*
*/
public void onDestroy() {
Log.i("msg","onBind() onDestroy()...");
super.onDestroy();
}
}