Android入门五(Service)

Service

  • 实质:提供了一种不启动前台界面、让你在后台执行一些运算的途,方便挂起后台运行
  • 后台运行,无界面,优先级高于activity
  • 四大组件运行在主线程,不能用来做耗时操作;可以在服务中开一个线程,在线程中进行操作
  • 类型
    • 本地服务.应用程序内部,startService/stopService, bindService
    • 远程服务.手机内部应用程序之间
    • 都需要定义IBinder接口
  • StartService
    • 特点:服务与启动源没有联系,无法得到服务对象
  • BindService
    • 特点:通过IBinder接口实例,返回一个ServiceConnection对象给启动源,通过后者的方法可以得到Service对象 
  • 定义一个类继承Service,需要进行注册,载xml文件中
    <service android:name="包+类"></service>
  • 实例
//MainActivity
MyBinderService service;
ServiceConnection conn = new ServiceConnection(){
    //当启动源与service连接意外丢失,比如service崩溃
    onServiceDisconnected(ComponentName name);
    //当启动源与service成功连接
    onServiceConnected(ComponentName name, IBinder binder) {
        service = ((Mybinder)binder).getService();
    }
}
Intent intent = new Intent(MainActivity.this, MyBinderService.class);
bindService(intent, conn, Service.BIND_AUTO_CREATE);
//只能unbind一次
unbindService(conn);
startService(intent);

//MyBinderService.class
public class MyBinder extends Binder {
    public MyBindService getService() {
        return MyBinderService.this;
    }
}
public IBinder onBind(Intent intent) {
    return new MyBinder();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值