安卓服务的启动方式之一 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这个里面)

发布了80 篇原创文章 · 获赞 17 · 访问量 8万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览