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
MainActivity.java
実行結果:
サービスを開始:
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
手順:
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: !");
}
}
}
実行結果:
サービスを開始:
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