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配置工具中的安装中心, 第二步:再进入维护界面,选择版本升级, 第三步:进 ...
随机推荐
- JavaScript 字典(Dictionary)
TypeScript方式实现源码 // set(key,value):向字典中添加新元素. // remove(key):通过使用键值来从字典中移除键值对应的数据值. // has(key ...
- vue插件移动框
npm i dragablemodel -S(安装插件) import dragablemodel from 'dragablemodel' Vue.use(loading) 模板(组件) <d ...
- 视觉slam学习之路(一)看高翔十四讲所遇到的问题
目前实验室做机器人,主要分三个方向,定位导航,建图,图像识别,之前做的也是做了下Qt上位机,后面又弄红外识别,因为这学期上课也没怎么花时间在项目,然后导师让我们确定一个方向来,便于以后发论文什么. ...
- Java集合详解二
前一篇我们已经讲过了Collectin是存放单值的最大接口, 可以看到Map接口和其主要之类的关系图如下: 快速访问 HashMap HashTable TreeMap Map输出 那Map ...
- [UOJ 282]长度测量鸡
Description
- [WC2013]糖果公园
Description 题库链接 给你一棵 $n$ 个节点,有 $m$种颜色的树.每个节点上有一个颜色.定义一条树上路径的价值为 $sum_c V_c(\sum_{i=1}^{tim_c}W_i)$ ...
- 2015 多校联赛 ——HDU5400(水)
Sample Input 5 2 -2 0 2 0 -2 0 5 2 3 2 3 3 3 3 Sample Output 12 5 求最多多少序列满足,前半部分满足d(j+1) = d(j)+d1 ...
- poj 2689 (素数二次筛选)
Sample Input 2 17 14 17 Sample Output 2,3 are closest, 7,11 are most distant. There are no adjacent ...
- hdu 3433 A Task Process 二分+dp
A Task Process Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 1754 线段树(Max+单点修改)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...