后台服务

桌面应用程序:可见

服务:不可见  长期在后台运行 帮助应用执行耗时的操作

安卓的服务:安卓四大组件之一  不可见   后台长期运行 界面与服务有时候要执行数据交互

如何创建服务:

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相关推荐

  1. Android 后台服务(Service)

    声明:各个方法的用法都在代码的注释里:可以自行观看 Service的代码: public class MyService extends Service {MyBinder myBinder = ne ...

  2. Android——后台服务

    Android应用编程实验 实验名称:Android 后台服务 实验目的:通过Service设计后台服务程序,通过Broadcast实现信息广播机制 实验内容: 设计一个简单的后台音乐服务程序: 设计 ...

  3. Android后台服务---无交互时的Service

    Service是Android四大组件之一,他主要负责后台服务,长时间运行. 一:主要特点 (1)优先级大于Activity,即使Activity被停止后,他也不会轻易被终止 (2)即使被系统终止,在 ...

  4. android 后台服务拍照,Android实现后台开启服务默默拍照功能

    本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...

  5. Android移动开发之【Android实战项目】后台服务Service

    桌面应用程序:可见 服务:不可见 长期在后台运行 帮助应用执行耗时的操作 安卓的服务:安卓四大组件之一 不可见 后台长期运行 界面与服务有时候要执行数据交互 文章目录 如何创建服务 创建一个类 继承S ...

  6. Android判断后台服务(Service)是否运行

    今天在项目中需要判断某个服务是否在后台运行,因此写了一个工具类方便大家调用,话不多说,上代码. *** 服务工具类* * @author Administrator* */ public class ...

  7. android 后台运行service实现和后台的持续交互

    在项目中有这么一种需求 需要后台开启服务,时刻记录用户和软件的交互行为,一旦交互发生,就向服务器测发送一条消息 解决方案: 一.创建一个service服务类 在service中开启一个线程,servi ...

  8. Android的服务Service

    Android学了太久了,都忘了.复习下四大组件之一的Service. 介绍 Android的Service是一种在后台执行长时间运行操作的组件,它可以在没有用户界面的情况下执行任务,并且可以与应用程 ...

  9. android创建标题栏,【Android】利用服务Service创建标题栏通知

    创建标题栏通知的核心代码 public void CreateInform() { //定义一个PendingIntent,当用户点击通知时,跳转到某个Activity(也可以发送广播等) Inten ...

最新文章

  1. suface怎么把计算机放到桌面,快速使用Surface的八条技巧
  2. Python requests 抓取网页状态返回418(亲测)
  3. OpenFOAM中slip和noslip介绍(滑移条件无滑移条件)【翻译】
  4. [Spring5]IOC容器_Bean管理注解方式_注入属性@Autowired_@Qualified_@Resource_@Value
  5. ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
  6. 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 screen工具
  7. 李彦宏卸任百度云计算技术公司执行董事 崔珊珊接任
  8. python和.net的区别_c#教程之.net和C#的区别
  9. linux lsm模块,Linux安全模块LSM研究及改进
  10. 第五:RobotFramework测试开发环境部署
  11. SpringCloud微服务(02):Ribbon和Feign组件,实现服务调用的负载均衡
  12. 黑苹果系统补丁 MacOS Unlocker for VMware 3.0 下载和解锁安装macOS X 10.14图文教程
  13. c语言结构体编程时钟,c语言简单数学时钟(结构体,指针),求大佬帮助
  14. 适应iPhone5的尺寸
  15. 人工智能数学基础-线性代数1:向量及向量加减法与数乘
  16. 决定人生高度的,不是智力,而是体力
  17. emucheat,emucheat下载
  18. 推荐一款高颜值第三方网易云客户端: YesPlayMusic
  19. python快速入门精讲_Python快速入门精讲
  20. bzoj1475 求解最大独立集

热门文章

  1. 51单片机定时器的查询和进入中断处理
  2. 我在印尼工作的日子-初来乍到
  3. Vue3.0报错:The component has been registered but not used vue/no-unused-components,关闭eslint
  4. 关于实现3D立体旋转效果的轮播视图
  5. javascript 控制弹出式div页面大小,关闭
  6. [译] 2019版 web 浏览器现状
  7. 百度翻译api设置 java_Java调用百度API实现翻译
  8. TwinCAT3 C++ ——数字签名证书无法成功
  9. 软件设计师每日一练真题笔记
  10. 【树莓派学习笔记】树莓派4B上运行uboot并从网络启动linux内核(上)