Service 分爲Local service 和remote Service
本地的service 代表例子 音樂播放器
service 代碼結構
(1)一個service 服務
package com.bsn.servicedemo;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
public class LocalService extends Service{
public class SimpleBinder extends Binder{
public LocalService getService(){
return LocalService.this;
}
public int add(int a,int b){
return a+b;
}
}
@Override
public IBinder onBind(Intent intent) {
return simpleBinder;
}
public SimpleBinder simpleBinder;
@Override
public void onCreate() {
super.onCreate();
simpleBinder=new SimpleBinder();
}
}在這個Service 中我們主要通過一個類繼承Binder。 然後在onBind中把這個類給return。。然後我們就可以在使用service的Activity 中的onServiceConnected 中的service
2 綁定service 的activity
package com.bsn.servicedemo; import com.bsn.servicedemo.LocalService.SimpleBinder; import android.app.Activity; import android.content.ComponentName; import android.content.Context; 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 ServiceDemoActivity extends Activity { private ServiceConnection sc; private boolean isBind=false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button=(Button) findViewById(R.id.btn); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { bindService(new Intent(ServiceDemoActivity.this,LocalService.class), sc, Context.BIND_AUTO_CREATE); isBind=true; } }); Button button2=(Button) findViewById(R.id.stopbtn); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isBind) { unbindService(sc); } isBind=false; } }); sc=new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { LocalService.SimpleBinder sbinder =(SimpleBinder) service; Log.i("bsntest", "--3=5=-"+sbinder.add(5, 3)); Log.i("bsntest", sbinder.getService().toString()); } }; } }
(3)註冊service。。。。。。。
不早了,該睡覺了。明天再瞅瞅remote Service。。然後開始完善天氣預報。。