51サービスのオープン方式

6613 ワード

サービスオープン方式の知識点はブログを参照してください.http://blog.csdn.net/zengmingen/article/details/49425161
手順:
1、Androidプロジェクト名「51サービスのオープン方式」を新設
2、クラスMyServiceを新規作成し、サービスを継承する
3、リストファイルに第二段階のサービスを配置する
4、MyserviceクラスにonBind,onUnbind,onCreate,onStartCommand,onDestroyを上書きし、これらの方法に簡単なsysoを書く
5、activity_の作成main.xmlレイアウトファイル、簡単に4つのボタンを配置して、ボタンはonclick方法を設定します
6、ボタンの書き方
API解釈:
bindService(Intent service,ServiceConnection conn, int flags)
≪アクション|Actions|emdw≫:サービスをバインドします.パラメータサービス内のサービスをサービス接続サービス接続接続サービスによりパラメータflagsでサービスをバインドする
サービス:起動するサービス、ローカルまたはリモートサービスが設定されています
conn:このクラスには2つのコールバックメソッドがあります.
1、public void onServiceConnected(ComponentName name, IBinder service) 
このメソッドは、MyServiceクラスのonBind()メソッドがIBinderのインスタンスを返すときに呼び出されます.返されたnullの場合、呼び出されません.
2、public void onServiceDisconnected(ComponentName name)
このメソッドは、接続が正常に閉じている場合に呼び出されません.このメソッドは、サービスが破壊されたり、殺されたりしたときにのみ呼び出されます.たとえば、システムリソースが不足している場合、いくつかのServicesを閉じるには、接続バインドされたServicesが閉じられている人の1つであり、このときonServiceDisconnected()が呼び出されます.
flags:BIND_を使用するのが一般的ですAUTO_CREATEは、Contextの定数であり、サービスが存在するかどうかに応じて自動的にサービスを作成します.
コード:
MyService.java
package com.example.serviceway;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		System.out.println("MyService:onBind()");
		return null;
	}
	
	@Override
	public boolean onUnbind(Intent intent) {
		System.out.println("MyService:onUnbind()");
		return super.onUnbind(intent);
	}
	
	@Override
	public void onCreate() {
		System.out.println("MyService:onCreate()");
		super.onCreate();
	}
	
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		System.out.println("MyService:onStartCommand()");
		return super.onStartCommand(intent, flags, startId);
	}
	
	@Override
	public void onDestroy() {
		System.out.println("MyService:onDestroy()");
		super.onDestroy();
	}

}

MainActivity.java
package com.example.serviceway;

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.view.View;

public class MainActivity extends Activity {
	
	private Intent intent;
	
	private ServiceConnection conn;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		intent=new Intent();
		intent.setClass(this, MyService.class);
		
		conn=new MyServiceConnection();
	}
	
	public void startService(View v){
		startService(intent);
	}
	
	public void stopService(View v){
		stopService(intent);
	}
	
	public void bindService(View v){
		//BIND_AUTO_CREATE         ,       ,     
		bindService(intent, conn, BIND_AUTO_CREATE);
	}
	
	public void unBindService(View v){
		unbindService(conn);
	}
	
	class MyServiceConnection implements ServiceConnection{

		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			//       ,     
			System.out.println("MyServiceConnection:     !");
		}

		@Override
		public void onServiceDisconnected(ComponentName name) {
			//       ,     
			System.out.println("MyServiceConnection:       !");
		}
	}

}



    

    
        
            
                

                
            
        
        
    


51服务的开启方式_第1张图片
実行結果:
サービスを開始:
10-26 08:38:26.386: I/System.out(2072): MyService:onCreate()10-26 08:38:26.386: I/System.out(2072): MyService:onStartCommand()
サービスの停止:
10-26 08:39:03.076: I/System.out(2072): MyService:onDestroy()
バインドサービス:
10-26 08:39:21.436: I/System.out(2072): MyService:onCreate()10-26 08:39:21.436: I/System.out(2072): MyService:onBind()
解除サービス:
10-26 08:39:48.807: I/System.out(2072): MyService:onUnbind()10-26 08:39:48.807: I/System.out(2072): MyService:onDestroy()
バインドサービス------>戻るキーactivityを終了
10-26 08:40:34.818: I/System.out(2072): MyService:onCreate()10-26 08:40:34.818: I/System.out(2072): MyService:onBind()10-26 08:40:36.578: I/System.out(2072): MyService:onUnbind()10-26 08:40:36.578: I/System.out(2072): MyService:onDestroy()
Activity破棄、サービス破棄
バインドサービス------>ホームキー
10-26 08:41:16.698: I/System.out(2072): MyService:onCreate()10-26 08:41:16.698: I/System.out(2072): MyService:onBind()
Activityはまだありますが、サービスは破棄されていません.
サービスを開始---->戻るキーactivityを終了
10-26 08:42:43.020: I/System.out(2072): MyService:onCreate()10-26 08:42:43.020: I/System.out(2072): MyService:onStartCommand()
Activity破棄、サービスは破棄しない
--------------------------------------
サービスを開始---バインドサービス---サービスを停止
10-26 08:44:05.991: I/System.out(2072): MyService:onCreate()10-26 08:44:06.001: I/System.out(2072): MyService:onStartCommand()10-26 08:44:07.402: I/System.out(2072): MyService:onBind()
サービスボタンを止めて力を入れて、サービスも破壊を止めていません.why?
サービスをバインドした後、サービスを停止するのは無効なので、解縛方法を使用し、解縛時に同時にサービスを破棄する必要があります.
サービスを開始する
10-26 08:55:52.942: I/System.out(2545): MyService:onCreate()10-26 08:55:52.942: I/System.out(2545): MyService:onStartCommand()10-26 08:55:53.871: I/System.out(2545): MyService:onBind()10-26 08:55:56.691: I/System.out(2545): MyService:onUnbind()10-26 08:55:56.691: I/System.out(2545): MyService:onDestroy()
コードダウンロード、0ポイントダウンロード
http://download.csdn.net/detail/zengmingen/9214327