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プロファイルは次のとおりです.



    

    
        
            
                

                
            
        
        
        
        
        
            
                 
                   
        
    


メイン・プログラム・エントリ:
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();
	}

}
  • service.rar (1.3 MB)
  • ダウンロード回数:6