实现BiandService

AndroidManifest.xml 注册
        <service 
            android:name="com.example.myservice.BindService">
            <intent-filter >
                <action android:name="yaosai.gogo"/>
            </intent-filter>
        </service>

继承了service的子类
public class BindService extends Service {
	//计数器及开关
	private int count;
	private boolean quit;
	private Mybinder mybinder = new Mybinder();
	//通过继承binder来实现IBinder的类  作为service的代理人,实现了客户端与service的绑定
	public class Mybinder extends Binder{
		public int getCount(){
			//获取service的运行状态count
			return count;
		}
	}
	//返回一个IBinder对象
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("service is binded");
		return mybinder;
	}
	
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		System.out.println("创建了oncreate");
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				while(!quit){
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					count++;
				}
			}
		}).start();
		
	}
	//service 被断开连接时回调该方法 关闭连接
	@Override
	public boolean onUnbind(Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("service is unbind");
		return super.onUnbind(intent);
	}
	//销毁
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		this.quit = true;
		System.out.println("Service is Destroy");
	}
}
主方法开启service
public class MainActivity extends Activity {
	private Button startService;
	private Button stopService;
	private Button gerService;
	//一个service代理对象
	BindService.Mybinder binder;
	//一个监听访问者与service之间的连接情况
	private ServiceConnection conn  = new ServiceConnection() {
		//连接失败回调
		@Override
		public void onServiceDisconnected(ComponentName name) {
			// TODO Auto-generated method stub
			System.out.println("--onServiceDisconnected--");
		}
		//连接成功 回调
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			// TODO Auto-generated method stub
			//返回service中onBind返回的binder对象
			binder= (Mybinder) service;
			
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
	
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		startService = (Button) findViewById(R.id.button1);
		stopService = (Button) findViewById(R.id.button2);
		gerService = (Button) findViewById(R.id.button3);
		final Intent intetn = new Intent();
		intetn.setAction("yaosai.gogo");
		startService.setOnClickListener(new OnClickListener() {
		
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//开启service   ① 意图 ② ServiceConnection ③是否创建
				bindService(intetn, conn, Service.BIND_AUTO_CREATE);
			}
		});
		stopService.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//关闭
				unbindService(conn);
			}
		});
		gerService.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//根据代理binder获得数据
				Toast.makeText(MainActivity.this, "count的值:"+binder.getCount(), Toast.LENGTH_SHORT).show();
			}
		});
	}




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值