23 服务的绑定启动Demo3
MainActivity.java
package com.example.day23_service_demo3;
import com.example.day23_service_demo3.MyService.MyBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private MyServiceConn conn;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
conn = new MyServiceConn();
tv = (TextView) findViewById(R.id.tv);
}
//绑定服务
public void MyBindServiceClick(View v){
Intent intent = new Intent(MainActivity.this, MyService.class);
/**
* 参数1:intent对象 指明绑定的组件
* 参数2:当前服务的链接状态
* 参数3:绑定服务的标记 :绑定且创建
*/
bindService(intent, conn, Context.BIND_AUTO_CREATE);
}
//解除绑定服务
public void MyUnBindServiceClick(View v){
unbindService(conn);
}
/**
* 创建服务的链接对象 MyServiceConn
* @author sxy
*
*/
class MyServiceConn implements ServiceConnection{
/**
* 表示当前服务连接成功后回调此方法
* 参数1:组件名称
* 参数2:连接后onBind() 返回的对象
*/
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
MyBinder myBinder = (MyBinder) service;
//获取到Service对象
MyService myService = myBinder.getService();
int num = myService.getRandom();
tv.setText(num+"");
}
/**
* 失去连接回调此方法
*/
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
conn = null;
}
}
}
MyService.java
package com.example.day23_service_demo3;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service{
private static final String TAG ="MyService";
/**
* 必须实现的方法 绑定服务时调用的方法
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onBind===");
return new MyBinder();
}
//创建MyBinder类 将MyBinder传递给 绑定源 Service 不能直接去new 通过传递才可以
public class MyBinder extends Binder{
public MyService getService(){
return MyService.this;
}
}
/**
* 随机数
* @return
*/
public int getRandom(){
return (int) (Math.random()*10+1);
}
/**
* 表示服务创建时调用
*/
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.e(TAG , "===onCreate===");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.e(TAG , "===onStartCommand===");
return START_NOT_STICKY;
}
/**
* 解除绑定时 调用此方法
*/
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onUnbind===");
return super.onUnbind(intent);
}
/**
* Service销毁时调用此方法
*/
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e(TAG , "===onDestroy===");
}
}
清单文件
AndroidManifest.xml
package com.example.day23_service_demo3;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service{
private static final String TAG ="MyService";
/**
* 必须实现的方法 绑定服务时调用的方法
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onBind===");
return new MyBinder();
}
//创建MyBinder类 将MyBinder传递给 绑定源 Service 不能直接去new 通过传递才可以
public class MyBinder extends Binder{
public MyService getService(){
return MyService.this;
}
}
/**
* 随机数
* @return
*/
public int getRandom(){
return (int) (Math.random()*10+1);
}
/**
* 表示服务创建时调用
*/
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.e(TAG , "===onCreate===");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.e(TAG , "===onStartCommand===");
return START_NOT_STICKY;
}
/**
* 解除绑定时 调用此方法
*/
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onUnbind===");
return super.onUnbind(intent);
}
/**
* Service销毁时调用此方法
*/
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e(TAG , "===onDestroy===");
}
}
23 服务的绑定启动Demo3的更多相关文章
- 23 服务音乐的启动Demo4
注意如果音乐服务和Activity在一个应用中那么将不会因为绑定的Activity销毁而关闭音乐 MainActivity.java package com.qf.day23_service_demo ...
- 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"
最近在工作中新加了一个接口,本地调试的时候,直接抛出“接收对 http://xxx.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中 ...
- Centos7 redis 5.0 服务设置、启动、停止、开机启动
redis 没有配置服务,没有开启动,每次都要手工配置. 解决这个麻烦,我们new一个服务,然后开机启动即可. 1.创建服务(redis.conf 配置文件要注意,经过cp产生了很多个redis.co ...
- ZooKeeper单机服务端的启动源码阅读
程序的入口QuorumPeerMain public static void main(String[] args) { // QuorumPeerMain main = new QuorumPeer ...
- Netty服务端的启动源码分析
ServerBootstrap的构造: public class ServerBootstrap extends AbstractBootstrap<ServerBootstrap, Serve ...
- WCF之Windows宿主(可安装成服务自动并启动)
WCF之Windows宿主(可安装成服务自动并启动) 创建解决方案WCFServiceDemo 创建WCF服务库(类库或WCF服务库)WCFService ,添加引用System.ServiceMo ...
- netty服务端客户端启动流程分析
服务端启动流程 我们回顾前面讲解的netty启动流程,服务端这边有两个EventLoopGroup,一个专门用来处理连接,一个用来处理后续的io事件 服务端启动还是跟nio一样,绑定端口进行监听,我们 ...
- 将MongoDB服务加入随机启动
将MongoDB服务加入随机启动 vi /etc/rc.local 使用vi编辑器打开配置文件,并在其中加入下面一行代码 /usr/local/mongodb/bin/mongod -dbpath=/ ...
- 关于sql server 2008过期导致 MSSQLSERVER服务就无法启动,手动启动就报告错误代码17051。
1.基本现象:MSSQLSERVER服务就无法启动,手动启动就报告17051错误. 2.解决办法: 第一步:进入SQL2008配置工具中的安装中心, 第二步:再进入维护界面,选择版本升级, 第三步:进 ...
随机推荐
- java中的强大的枚举(基本没人用)
枚举的概念和多例设计模式相似,多例设计模式详见:多例设计模式代码模型 范例:简单枚举类 通过emu关键字定义一个枚举 package com.java.demo; enum Color{ RED,BL ...
- 第一章 搭建一个通用的.net core项目框架
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- SpringMVC 自定义类型转换器
先准备一个JavaBean(Employee) 一个Handler(SpringMVCTest) 一个converters(EmployeeConverter) 要实现的输入一个字符串转换成一个emp ...
- TensorFlow学习笔记(UTF-8 问题解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
我使用VS2013 Python3.5 TensorFlow 1.3 的开发环境 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff ...
- hdu5444(模拟)
题意:建树,给你几个点,要求输出走到各个点的路径(左为E,右为W,树的遍历) 二叉树的模拟题,但是GG了两次. 主要是没注意到直接模拟会爆掉- -,进行下处理就好了 #include <iost ...
- [USACO Jan09] 安全路径
Gremlins最近在农场上泛滥,它们经常会阻止牛们从农庄(牛棚_1)走到别的牛棚(牛_i的目的 地是牛棚_i).每一个gremlin只认识牛_i并且知道牛_i一般走到牛棚_i的最短路经.所以它 们在 ...
- [Noi2013]书法家
来自FallDream的博客,未经允许,请勿转载,谢谢. 小E同学非常喜欢书法,他听说NOI2013已经开始了,想题一幅“NOI”的字送给大家. 小E有一张非常神奇的纸,纸可以用一个n 行m 列的二维 ...
- xx学院学员评优评奖管理系统
[勤拂拭软件,软件开发,毕业设计,程序作业,论文写作指导:q-[1215714557] 加好友请注明:勤拂拭)] 之前帮助一个军校学生做的一个评优评奖管理系统,该系统主要用于学校学生评优评先使用. ...
- 垃圾回收机制(GC)
垃圾收集器(GC)与内存分配策略 GC需要完成的三件事: 判断哪些内存需要回收 什么时候回收 如何回收 在java内存运行时区域的各个部分中,程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程 ...
- 谷歌发布 TensorFlow Serving
TensorFlow服务是一个灵活的,高性能的机器学习模型的服务系统,专为生产环境而设计. TensorFlow服务可以轻松部署新的算法和实验,同时保持相同的服务器体系结构和API. TensorFl ...