android 服务
2019独角兽企业重金招聘Python工程师标准>>>
1.新建class 继承android.app.Service;重写其oncreat、onbind、ondestroy、onunbind方法
package com.example.services;
import java.util.Timer;
import java.util.TimerTask;
import android.R.integer;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;
public class EchoServices extends Service {
@Override
public IBinder onBind(Intent arg0) {
Toast.makeText( this, " 启动服务onBind ", 1).show();
startTimer();
return bindServices;
}
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText( this, " 关闭服务onUnbind ", 1).show();
stopTimer();
return super.onUnbind(intent);
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText( this, " 启动服务onCreat ", 1).show();
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText( this, " 关闭服务onDestroy ", 1).show();
}
public bindServices bindServices = new bindServices();
public class bindServices extends Binder {
public EchoServices getEchoServices(){
return EchoServices. this;
}
}
private Timer timer= null;
private TimerTask task= null;
private int i= 0;
private void startTimer(){
if(timer== null){
timer= new Timer();
task= new TimerTask() {
@Override
public void run() {
i++;
}
};
timer.schedule(task, 1000, 1000);
}
}
private void stopTimer(){
if(timer!= null){
task.cancel();
timer.cancel();
timer= null;
task= null;
}
}
public int getCurrentNumber(){
return i;
}
}
1 package com.example.services;
3 import android.os.Bundle;
4 import android.os.IBinder;
5 import android.app.Activity;
6 import android.content.ComponentName;
7 import android.content.Context;
8 import android.content.Intent;
9 import android.content.ServiceConnection;
10 import android.view.Menu;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 import android.widget.Toast;
15 import android.widget.SearchView.OnCloseListener;
16
17 public class MainActivity extends Activity implements OnClickListener, ServiceConnection {
18
19 private Button btn_start, btn_stop, btn_bind, btn_unbind,btn_getNum;
20 private Intent servicesIntent;
21 private EchoServices echoServices;
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main);
27 btn_start = (Button) findViewById(R.id.btn_start);
28 btn_stop = (Button) findViewById(R.id.btn_stop);
29 btn_bind = (Button) findViewById(R.id.btn_bind);
30 btn_unbind = (Button) findViewById(R.id.btn_unbind);
31 btn_getNum = (Button) findViewById(R.id.btn_getNum);
32 btn_start.setOnClickListener( this);
33 btn_stop.setOnClickListener( this);
34 btn_bind.setOnClickListener( this);
35 btn_unbind.setOnClickListener( this);
36 btn_getNum.setOnClickListener( this);
37 servicesIntent = new Intent( this, EchoServices. class);
38 }
39
40 @Override
41 public void onClick(View v) {
42 int id = v.getId();
43 switch (id) {
44 case R.id.btn_start:
45 startService(servicesIntent);
46 break;
47 case R.id.btn_stop:
48 stopService(servicesIntent);
49 break;
50 case R.id.btn_bind:
51 bindService(servicesIntent, this, Context.BIND_AUTO_CREATE);
52 break;
53 case R.id.btn_unbind:
54 unbindService( this);
55 break;
56 case R.id.btn_getNum:
57 if(echoServices!= null){
58 System.out.println(echoServices.getCurrentNumber());
59 }
60
61 break;
62 }
63
64 }
65
66 /**
67 * 当服务绑定成功时触发
68 */
69 @Override
70 public void onServiceConnected(ComponentName arg0, IBinder binder) {
71 Toast.makeText(getApplicationContext(), "绑定成功", 1).show();
72 echoServices=((EchoServices.bindServices)binder).getEchoServices();
73 }
74
75 /**
76 * 当绑定失败时触发
77 */
78 @Override
79 public void onServiceDisconnected(ComponentName arg0) {
80 Toast.makeText(getApplicationContext(), "绑定失败", 1).show();
81 }
82
83 }
4.oncreat、onbind、ondestroy、onunbind方法的区别
采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法,这个时候访问者和服务绑定在一起。 如果访问者要与服务进行通信,那么,onBind()方法必须返回Ibinder对象。如果访问者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果访问者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。
Activity与服务进行通信,开发人员通常把通信方法定义在接口里,然后让Ibinder对象实现该接口,而Activity通过该接口引用服务onBind()方法返回的Ibinder对象,然后调用Ibinder对象里自定义的通信方法。
转载于:https://my.oschina.net/zhangjie9142/blog/495194
android 服务相关推荐
- android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...
Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...
- erlang-百度云推送Android服务端功能实现-erlang
百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Androi ...
- Android服务一 创建启动服务
若要学习创建绑定服务,请查看下篇Android服务二 创建绑定服务 启动服务 基于Service package service;import android.app.Service; import ...
- Qt创建Android服务
Qt创建Android服务 创建Android服务 创建Android服务 从Qt 5.7开始,您可以使用Qt创建Android服务.服务是在后台运行的组件,因此它没有用户界面.执行长期操作(例如记录 ...
- Android 服务入门
前言:硬着头皮把数据库SQLite看完了,接下来就是android服务了,因为自己本身就是菜鸟,所以呢,也只是做做笔记,技术上的东西就别指望我了. 1.什么是服务呢?举个例子,百度地图,美团外卖,OF ...
- android.os.binderproxy cannot be cast to,Android服务android.os.BinderProxy错误
我一直在尝试使此android服务正常工作,但我不知道为什么会收到此错误. 05-13 12:13:36.203: ERROR/dalvikvm(7782): could not disable co ...
- android 服务自动结束,Android服务自动停止
我正在制作一个带有闹钟功能的应用程序.我正在使用这种服务,不断检查设备的当前时间与我的数据库中的时间.Android服务自动停止 我的问题是,如果应用程序从后台删除或设备是rebooted,此serv ...
- Android服务函数远程调用源码分析
在Android服务查询完整过程源码分析中介绍了客户进程向ServiceManager进程查询服务的完整过程,ServiceManager进程根据服务名称在自身维护的服务链表中查找ServiceMan ...
- Android服务查询完整过程源码分析
Android服务注册完整过程源码分析中从上到下详细分析了Android系统的服务注册过程,本文同样针对AudioService服务来介绍Android服务的查询过程. 客户端进程数据发送过程 pri ...
- Android服务注册完整过程源码分析
前面从不同片段分析了Android的Binder通信机制,本文结合前面介绍的内容,对整个Android的Binder通信过程进行一次完整的分析.分析以AudioService服务的注册过程为例. 由于 ...
最新文章
- rest-framework之解析器
- SpringBoot自定义参数验证器
- 彻底理解Java的feature模式
- 《低功耗蓝牙开发权威指南》——第2章基本概念
- VMWare虚拟机连接方式
- Halcon知识:如何用mfc显示halcon读入图象
- 我回答的一个粉丝关于模拟SAP事务的问题
- java_db常见错误总结
- BP神经网络预测(python)
- 搜索引擎系统的原理和实践
- 小黄的日记,爱情本该如此
- 2016年计算机b级考试试题,2016年全国计算机等级考试模拟试题一级B.doc
- 关于华为手机P20pro装包时总提示冲突问题
- YGG SEA 在越南成功启动
- html怎么让视频背景固定不动,视频如何做到背景不动人物动的效果?背景动人物不动的视频...
- 【工具】免费的英语语法在线检查工具收集汇总
- mysql最左前缀概念_Mysql的最左前缀匹配原则(上)
- 自媒体内容发布要求有哪些?
- 错误: 句法分析器6行里不能有多字节字符_汉语自动分词,对搜索引擎有多大影响?...
- Java工程师学习指南(初级篇)
热门文章
- Warning:关于_CRT_SECURE_NO_WARNINGS
- Python中的seek函数 指针 使用教程
- 『中级篇』Docker Cloud自动构建 Docker image(55)
- 使用云效在阿里云上进行一站式开发运维
- Microsoft Operations Management Suite 启用NPM网络性能监视
- QMessageBox 使用方法
- 数据工程师在未来将扮演不可或缺的角色
- JavaScript或jQuery中使用键盘控制对象运动
- aquamacs 夜间模式禁止滚动条
- Java Web 前端高性能优化(一)