03_Service的绑定
Start Service启动的Service,Application退出,Service也不会退出;
Bind Service启动的Service,Application退出,Service就会退出。
Start Service和Stop Service仅仅是启动服务,并不能进行通信。通过Bind Service与服务进行绑定,才能与服务通信。
package com.example.servdemo; 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.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener, ServiceConnection { private Button btnStartService, btnStopService, btnBindService, btnUnbindService, btnGetCurrentNum;
private Intent serviceIntent;
private EchoService echoService = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); serviceIntent = new Intent(this, EchoService.class); btnStartService = (Button) findViewById(R.id.btnStartService);
btnStopService = (Button) findViewById(R.id.btnStopService);
btnBindService = (Button) findViewById(R.id.btnBindService);
btnUnbindService = (Button) findViewById(R.id.btnUnbindService);
btnGetCurrentNum = (Button) findViewById(R.id.btnGetCurrentNum); btnStartService.setOnClickListener(this);
btnStopService.setOnClickListener(this);
btnBindService.setOnClickListener(this);
btnUnbindService.setOnClickListener(this);
btnGetCurrentNum.setOnClickListener(this);
} @Override
public void onClick(View v) { switch (v.getId()) { case R.id.btnStartService:
startService(serviceIntent);
break; case R.id.btnStopService:
stopService(serviceIntent);
break; case R.id.btnBindService:
bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);
break; case R.id.btnUnbindService:
unbindService(this);
echoService = null;
break; case R.id.btnGetCurrentNum:
if (echoService != null) {
System.out.println("The Number is "+echoService.getCurrentNum());
}
break;
}
} @Override
public void onServiceConnected(ComponentName name, IBinder binder) {
System.out.println("onServiceConnected!"); echoService = ( (EchoService.EchoServiceBinder)binder ).getService();
} @Override
public void onServiceDisconnected(ComponentName name) { } }
package com.example.servdemo; import java.util.Timer;
import java.util.TimerTask; import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder; public class EchoService extends Service { @Override
public IBinder onBind(Intent intent) {
System.out.println("onBind!");
return echoServiceBinder;
} private final EchoServiceBinder echoServiceBinder = new EchoServiceBinder(); public class EchoServiceBinder extends Binder{
public EchoService getService() {
return EchoService.this;
}
} public int getCurrentNum(){
return i;
} @Override
public void onCreate() {
// TODO Auto-generated method stub
System.out.println("Service Start!");
startTimer();
super.onCreate();
} @Override
public void onDestroy() {
// TODO Auto-generated method stub
System.out.println("Service Stop!");
stopTimer();
super.onDestroy();
} private int i = 0; public void startTimer(){
if(timer == null){
timer = new Timer();
timerTask = new TimerTask() { @Override
public void run() {
i++;
System.out.println(i);
}
}; timer.schedule(timerTask, 1000, 1000);
}
} public void stopTimer(){
if(timer != null){
timerTask.cancel();
timer.cancel(); timer = null;
timerTask = null;
}
} private Timer timer = null;
private TimerTask timerTask = null; }
03_Service的绑定的更多相关文章
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- 冒泡,setinterval,背景图的div绑定事件,匿名函数问题
1.会冒泡到兄弟元素么? $(function(){ $("#a").click(function(){alert("a")}) $("#b" ...
- Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容
我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...
- 数据的双向绑定 Angular JS
接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...
- Html.DropDownLis绑定数据库
效果: 方法一: View: <div class="col-md-md-4"> <div class="input-group"> & ...
- ASP.NET MVC——模型绑定
这篇文章我们来讲讲模型绑定(Model Binding),其实在初步了解ASP.NET MVC之后,大家可能都会产生一个疑问,为什么URL片段最后会转换为例如int型或者其他类型的参数呢?这里就不得不 ...
- Spring MVC初始化参数绑定
初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 proper ...
随机推荐
- DataStructure-enum枚举
Enum:枚举类型 enum模块定义了一个提供迭代和比较功能的枚举类型.可以用这个模块为值创建明确定义的符号,而不是使用字面量整数或字符串. 创建枚举 可以使用class派生Enum,然后增加描述值得 ...
- 删除指定路径下指定天数之前(以文件的修改日期为准)的文件:forfiles
删除指定路径下指定天数之前(以文件的修改日期为准)的文件:forfiles 代码如下: @echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件. ::如果演示结果无 ...
- 记录电子竞技游戏jesp中的传输过程公式
1.json数据转换成字典 dict1 = json.load(load_f1) dict2 = json.load(load_f2) 2.将两个字典按key排好序,然后使用zip()函数将两个字典对 ...
- python开发基础(二)-运算符以及数据类型
##运算符 算数运算符: ---> 赋值运算符 >>>返回结果为值 + # 加 - # 减 * # 乘 / # 除以 ** # 幂运算 % # 取余数 // # 取商 #### ...
- Python之使用pip安装三方库Error:Could not find a version that satisfies the requirement <package>(from versions: none),No matching distribution found for <package>
出现多次使用pip安装包时提示以下报错: ERROR: Could not find a version that satisfies the requirement <package> ...
- 3、编程语言与Python介绍
一 引子 基于上一章所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本章的主题是先了解一下编程语言,然 ...
- Inception系列之Batch-Normalization
训练深度神经网络非常复杂,因为在训练过程中,随着先前各层的参数发生变化,各层输入的分布也会发生变化,图层输入分布的变化带来了一个问题,因为图层需要不断适应新的分布,因此训练变得复杂,随着网络变得更深, ...
- C# Span 源码解读和应用实践
一:背景 1. 讲故事 这两天工作上太忙没有及时持续的文章产出,和大家说声抱歉,前几天群里一个朋友在问什么时候可以产出 Span 的下一篇,哈哈,这就来啦!读过上一篇的朋友应该都知道 Span 统一了 ...
- ubuntu 文件编码格式 转换
正在学习jquery,之前在windows下弄的编码到了 ubuntu下,乱码: 找到一个方法: iconv : 源文件:a.htm 格式:gbk: 目标: a.html 格式:utf8: ic ...
- 详解scanf与getchar
原文: (https://www.myjinji.top/articles/2020/07/22/1595399358246.html)[https://www.myjinji.top/article ...