Android后台服务Service
后台服务
桌面应用程序:可见
服务:不可见 长期在后台运行 帮助应用执行耗时的操作
安卓的服务:安卓四大组件之一 不可见 后台长期运行 界面与服务有时候要执行数据交互
如何创建服务:
1. 创建一个类 继承Service.
package com.li.servce;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;public class MyService extends Service{//Service启动时调用@Overridepublic void onCreate() {super.onCreate();Log.v("wang", "OnCreate 服务启动时调用");}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}//服务被关闭时调用@Overridepublic void onDestroy() {super.onDestroy();Log.v("wang", "onDestroy 服务关闭时");}}
四大组件多需要配置配置
<service android:name="com.li.servce.MyService"></service> <!--绑定一个服务类-->
调用服务器
package com.li.servce;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void createServiceClick(View v){Intent intent = new Intent(this,MyService.class);//启动servicce服务startService(intent);}//虽然应用界面已经退出 但是服务还是存在的//停止服务 可以通过按钮来关闭 可以通过代码关闭服务public void clickStopService(View v){Intent name= new Intent(this,MyService.class);stopService(name);//name表示停止哪一个服务}}
电话窃听器原理
开发步骤:
1. 创建一个后台运行的服务
2. 启动应用的时候启动服务
3. 在onCreate()调用的时候 创建一个系统的服务 并获取电话的状态
TelephonyManagermanager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//1. 注册监听器 2. 监听的事件
代码:
package com.li.callMyVoce;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;public class CallService extends Service{@Overridepublic void onCreate() {super.onCreate();//开始时刻接听用户电话状态 休闲(没有接听电话) 邻响 接通 挂断//如果自己去写代码接通用户状态 会很复杂 的操作 求系统//系统服务getSystemService(name) 电话有关的服务 服务的后缀一般以service manager ...作为后缀//TelephonyManager 他表示可以接听各种各样跟手机有关的很多服务 他表是一个大的概念TelephonyManager manager=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);//manager.listen(listener, events)manager.listen(new PhoneStateListener(){ //listener表是接听手机的那个状态比如说接听电话的服务new PhoneStateListenter()//重写方法等等@Overridepublic void onCallStateChanged(int state, String incomingNumber) {//incomingNumber表示电话号码 只有来点时才有值switch (state) {case TelephonyManager.CALL_STATE_IDLE:Log.v("wang", "CALL_STATE_IDLE 休闲状态 挂断");break;case TelephonyManager.CALL_STATE_OFFHOOK:Log.v("wang", "CALL_STATE_OFFHOOK 接通");break;case TelephonyManager.CALL_STATE_RINGING:Log.v("wang", "CALL_STATE_RINGING 电话铃声响状态"+incomingNumber);break;}}}, PhoneStateListener.LISTEN_CALL_STATE); // events 就是要指定对那些事件比较关心}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}
调用:
package com.li.callMyVoce;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.时时刻刻的接听用户当前的打电话状态 ----> Service//2.当用户开启接听电话的时候 开始录音 用户挂断了电话停止录音--->录音功能//3.当发现网络状态(广播 判断是否有网络)是开着的时候就应该发送录音到后台服务器}public void clickService(View v){Intent intent = new Intent(this,CallService.class);startService(intent);}
}
配置文件里面的铭感操作
<!-- 绑定服务器 --><service android:name="com.li.callMyVoce.CallService"></service><!-- 电话的铭感操作 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/>
总结:
* 服务是长期在后台运行的
* 开启一个用真的死循环的子线程也是在后台长期运行
*如果一个应用程序有后台的服务在运行,即使你杀掉进程,进程和服务还会自动的复活
* 如果一个应用程序只有后台的子线程运行 杀掉进程进程和子线程都挂了
* 如果你要保证一个后台的操作长期运行1.开启服务 2.在服务里面创建线程
Android后台服务Service相关推荐
- Android 后台服务(Service)
声明:各个方法的用法都在代码的注释里:可以自行观看 Service的代码: public class MyService extends Service {MyBinder myBinder = ne ...
- Android——后台服务
Android应用编程实验 实验名称:Android 后台服务 实验目的:通过Service设计后台服务程序,通过Broadcast实现信息广播机制 实验内容: 设计一个简单的后台音乐服务程序: 设计 ...
- Android后台服务---无交互时的Service
Service是Android四大组件之一,他主要负责后台服务,长时间运行. 一:主要特点 (1)优先级大于Activity,即使Activity被停止后,他也不会轻易被终止 (2)即使被系统终止,在 ...
- android 后台服务拍照,Android实现后台开启服务默默拍照功能
本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...
- Android移动开发之【Android实战项目】后台服务Service
桌面应用程序:可见 服务:不可见 长期在后台运行 帮助应用执行耗时的操作 安卓的服务:安卓四大组件之一 不可见 后台长期运行 界面与服务有时候要执行数据交互 文章目录 如何创建服务 创建一个类 继承S ...
- Android判断后台服务(Service)是否运行
今天在项目中需要判断某个服务是否在后台运行,因此写了一个工具类方便大家调用,话不多说,上代码. *** 服务工具类* * @author Administrator* */ public class ...
- android 后台运行service实现和后台的持续交互
在项目中有这么一种需求 需要后台开启服务,时刻记录用户和软件的交互行为,一旦交互发生,就向服务器测发送一条消息 解决方案: 一.创建一个service服务类 在service中开启一个线程,servi ...
- Android的服务Service
Android学了太久了,都忘了.复习下四大组件之一的Service. 介绍 Android的Service是一种在后台执行长时间运行操作的组件,它可以在没有用户界面的情况下执行任务,并且可以与应用程 ...
- android创建标题栏,【Android】利用服务Service创建标题栏通知
创建标题栏通知的核心代码 public void CreateInform() { //定义一个PendingIntent,当用户点击通知时,跳转到某个Activity(也可以发送广播等) Inten ...
最新文章
- suface怎么把计算机放到桌面,快速使用Surface的八条技巧
- Python requests 抓取网页状态返回418(亲测)
- OpenFOAM中slip和noslip介绍(滑移条件无滑移条件)【翻译】
- [Spring5]IOC容器_Bean管理注解方式_注入属性@Autowired_@Qualified_@Resource_@Value
- ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
- 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 screen工具
- 李彦宏卸任百度云计算技术公司执行董事 崔珊珊接任
- python和.net的区别_c#教程之.net和C#的区别
- linux lsm模块,Linux安全模块LSM研究及改进
- 第五:RobotFramework测试开发环境部署
- SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡
- 黑苹果系统补丁 MacOS Unlocker for VMware 3.0 下载和解锁安装macOS X 10.14图文教程
- c语言结构体编程时钟,c语言简单数学时钟(结构体,指针),求大佬帮助
- 适应iPhone5的尺寸
- 人工智能数学基础-线性代数1:向量及向量加减法与数乘
- 决定人生高度的,不是智力,而是体力
- emucheat,emucheat下载
- 推荐一款高颜值第三方网易云客户端: YesPlayMusic
- python快速入门精讲_Python快速入门精讲
- bzoj1475 求解最大独立集
热门文章
- 51单片机定时器的查询和进入中断处理
- 我在印尼工作的日子-初来乍到
- Vue3.0报错:The component has been registered but not used vue/no-unused-components,关闭eslint
- 关于实现3D立体旋转效果的轮播视图
- javascript 控制弹出式div页面大小,关闭
- [译] 2019版 web 浏览器现状
- 百度翻译api设置 java_Java调用百度API实现翻译
- TwinCAT3 C++ ——数字签名证书无法成功
- 软件设计师每日一练真题笔记
- 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)