Service的基本操作,启动service的方式有两种,一种是context.startService,暂停的service是stopService,这种方式service与主activity没有关联,不能单纯的进行数据交互(可以考虑使用广播,进行交互),另一种方式binderService,这种方式返回的是一个binder对象,
成都创新互联是一家专注于成都网站建设、成都做网站与策划设计,贡嘎网站建设哪家好?成都创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:贡嘎等地区。贡嘎做网站价格咨询:028-86922220binderService(Intent service,ServiceConnection conn,int flag):第一个参数是intent对象,第二个是链接对象,第三个是否自动创建service,0是不自动创建,BINDER_AUTO_CREATE
public class MyService extends Service {
public MyService() {
}
public int count = 0 ;
public MyBinder binder = new MyBinder();
public class MyBinder extends Binder {
// 创建一个集成Binder类的对象,activity调用service的时候返回一个Binder对象给activity
public int getCount(){
count = 10 ;
return count ;
}
}
@Override
public IBinder onBind(Intent arg0) {
// 必须实现的方法
return binder;
}
@Override
public void onCreate() {
// 每次创建的时候执行一次,
System.out.println("onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// service每次运行的时候执行
System.out.println("onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// 销毁的之后执行
System.out.println("onDestroy");
super.onDestroy();
}
}
public class MainActivity extends Activity implements OnClickListener {
private Button start, stop, get;
MyService.MyBinder binder;
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// 链接断开的时候进行掉用
System.out.println("service链接断开");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 进行链接的时候进行调用
System.out.println("service链接成功");
binder = (MyService.MyBinder) service;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
get = (Button) findViewById(R.id.get);
this.start.setOnClickListener(this);
this.stop.setOnClickListener(this);
this.get.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
// 第二种启动方式
Intent in = new Intent(MainActivity.this, MyService.class);
bindService(in, conn, Service.BIND_AUTO_CREATE);
// 第一种启动方式,activity关闭的时候service也会随着关闭
// Intent in = new Intent(MainActivity.this,MyService.class) ;
// MainActivity.this.startService(in) ;
break;
case R.id.stop:
// 第二种关闭方式
unbindService(conn);
// 第一种启动方式,activity关闭的时候service也会随着关闭
// Intent in2 = new Intent(MainActivity.this,MyService.class) ;
// MainActivity.this.stopService(in2) ;
break;
case R.id.get:
// 获取状态
System.out
.println("=====service返回的值======>>>>" + binder.getCount());
break;
default:
break;
}
}
}
附件:http://down.51cto.com/data/2365688创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。