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图形界面学习---------简易登录界面
/** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...
- CentOS下安装yum
在Linux里面依次输入下面的命令: 1,下载最新的yum-3.2.28.tar.gz并解压 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.t ...
- java 反射(Reflection)
看了很多关于java 反射的文章,自己把所看到的总结一下.对自己,对他人或多或少有帮助吧. Java Reflection是什么? 首先来看看官方文档Oracle里面对Reflection的描述: R ...
- 处处留心皆学问——由“display:inline-block;”导致的间距引发的思考。
昨天在做一个demo时遇到了一个问题:我有五个li需要并排排列,然后自然而然的我给它们设了display:inline-block;但是,过了很久之后发现,除了我写的样式外,它默认有一个间距,我们都不 ...
- TF-IDF In Scikit-Learn
TF-IDF In Scikit-Learn 2017年9月30日补充 其实在算下面TF-IDF的步骤之前,还有一步,就是计算Term Frequency 也就是词频.当然,scikit-lear ...
- [POI 2007]ZAP-Queries
Description Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Security Agency) ...
- UOJ #206. 【APIO2016】Gap
Description Solution 第一个子任务,直接从 \((a[i],a[j])\) 推出 \((a[i+1],a[j-1])\) 就行了,只需要 \(\frac{N+1}{2}\) 第二个 ...
- ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net
●赘述题目 给出一张弦图,求其最小染色数. ●题解 网上的唯一“文献”:<弦图与区间图>(cdq),可以学习学习.(有的看不懂) 摘录几个解决改题所需的知识点: ●子图和诱导子图(一定要弄 ...
- 【Miller-Rabin随机判素数算法】
实用性介绍: #include<bits/stdc++.h> #define go(i,a,b) for(int i=a;i<=b;i++) #define T 5 #define ...
- SparkSQL——用之惜之
SparkSql作为Spark的结构化数据处理模块,提供了非常强大的API,让分析人员用一次,就会为之倾倒,为之着迷,为之至死不渝.在内部,SparkSQL使用额外结构信息来执行额外的优化.在外部,可 ...