Android 中的service

 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。。然後開始完善天氣預報。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章