安卓服务的启动方式之一 bindService unbindService

`MainActivity.class

public class MainActivity extends AppCompatActivity {
private Intent intent;
private MyConn conn;
private IMyBinder myBinder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
//开启服务按钮的点击事件
public void start(View view) {
    intent = new Intent(this, MyService.class);
    conn = new MyConn();
    //绑定服务,
    // 第一个参数是intent对象,表面开启的服务。
    // 第二个参数是绑定服务的监听器
    // 第三个参数一般为BIND_AUTO_CREATE常量,表示自动创建bind
    bindService(intent, conn, BIND_AUTO_CREATE);
}

//调用服务方法按钮的点击事件
public void invoke(View view) {
    if (null != myBinder)
        myBinder.invokeMethodInMyService();
        else {
            Toast.makeText(getApplicationContext(), "服务还没开启。。。",
                    Toast.LENGTH_SHORT).show();
        }
}

private class MyConn implements ServiceConnection {
    @Override
    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
        Log.d("yw", componentName.toString());
        myBinder = (IMyBinder) iBinder;
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName) {

    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unbindService(conn);     //取消服务的绑定
}

}

**MyService服务类**
public class MyService extends Service {
    public MyService() {
    } 

    @Override
    public IBinder onBind(Intent intent) {
         return new MyBinder();
    }

    private void serviceMethod() {
        Toast.makeText(getApplicationContext(), "服务里的方法执行了。。。",
                Toast.LENGTH_SHORT).show();
    }

    private class MyBinder extends Binder implements IMyBinder {

        @Override
        public void invokeMethodInMyService() {
            serviceMethod();
        }
    }
}

IMyBinder接口

public interface IMyBinder {
    void invokeMethodInMyService();
}

最后不要忘记了去配置文件注册一下服务

 <service
         android:name=".service.MyService"
         android:enabled="true"
         android:exported="true">
 < /service>

源码下载链接:https://github.com/yang-mr/android_note.git (bindServiceDemo这个里面)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值