桌面应用程序:可见

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

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

文章目录

  • 如何创建服务
    • 创建一个类 继承Service.
    • 四大组件多需要配置配置
  • 调用服务器
  • 电话窃听器原理
    • 代码
    • 调用
    • 配置文件里面的铭感操作
  • 服务和子线程的区别

如何创建服务

创建一个类 继承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移动开发之【Android实战项目】后台服务Service相关推荐

  1. android studio开发工具介绍,Android应用开发之Android开发工具介绍、Android Studio配置...

    本文将带你了解Android应用开发之Android开发工具介绍.Android Studio配置,希望本文对大家学Android有所帮助. 2.1   Android Studio配置 2.1.1 ...

  2. android final参数,Android应用开发之Android Jetpack-Navigation 使用中参数的传递方法

    本文将带你了解Android应用开发之Android Jetpack-Navigation 使用中参数的传递方法,希望本文对大家学Android有所帮助. 由于使用了Navigation,导致Frag ...

  3. android中base64加密,Android应用开发之android自带Base64加密解密

    本文将带你了解Android应用开发之android自带Base64加密解密,希望本文对大家学Android有所帮助. android项目引用不到以下两个java类 import sun.misc.B ...

  4. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...

    本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...

  5. Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...

    本文将带你了解Android应用开发之Android Activity栈管理  制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...

  6. android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...

    本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...

  7. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)

    本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android   系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...

  8. android 电量详情,Android应用开发之Android 8.0 电池-)耗电详情获取方法

    本文将带你了解Android应用开发之Android 8.0 电池-)耗电详情获取方法,希望本文对大家学Android有所帮助. Android 8.0 电池-)耗电详情获取方法 主要介绍UI位置和基 ...

  9. android 接口实现方法,Android应用开发之Android 请求网络接口实现方法

    本文将带你了解Android应用开发之Android 请求网络接口实现方法,希望本文对大家学Android有所帮助. public   class Fragment01 extends Fragmen ...

  10. android显示通知图标大全,Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除...

    本文将带你了解Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除,希望本文对大家学Android有所帮助. android   桌面APP应用图标显示通知消息的数量 ...

最新文章

  1. Zookeeper 服务注册中心
  2. 逻辑地址、线性地址、物理地址和虚拟地址
  3. Git 版本管理工具命令速查
  4. (6)<a>标签如何实现点击既不刷新也不跳转的功能
  5. 开源搜索服务 Apache Solr 出现多个高危漏洞
  6. 史上最全macos安装xgboost教程
  7. 数据库安全关键技术之数据库脱敏技术详解
  8. linux/windows对应的软件
  9. vmware14克隆后UUID相同的解决方法
  10. 运营商拆除2G基站,老家的老人机还有信号吗?
  11. 音视频基础:音频(PCM和AAC)
  12. python中多行语句可以用反斜杠来实现_Python中的多行语句可以使用反斜杠来实现...
  13. 播布客学习视频_C学习笔记_2_打印输出
  14. 计算机中级职称能转评讲师,职称评审中的转评问题
  15. 洛谷P3237 [HNOI2014]米特运输
  16. 守望账号与服务器失去连接,win10玩守望先锋与服务器一直断开连接的解决方法...
  17. 股份有限公司章程记载事项有哪些
  18. 数据分析师,先去考这6 个证书
  19. 未来,智慧公路引领时代变革!
  20. 骁龙870和天玑1000+哪个好 天玑1000+和骁龙870对比,哪个更强

热门文章

  1. pytorch 卷积核
  2. redis 操作dict array
  3. 幂函数与指数函数的区别
  4. FFMPEG 日志输出控制
  5. C++调用Python实例
  6. mysql 截断表_入门MySQL——基础语句篇
  7. maven java 可执行jar_Maven项目打包成可执行Jar文件
  8. arch linux引导不启动_Linux 内核源代码的目录结构
  9. mysql 非正常关闭,centos非正常关机后,mysql竟然启动不了
  10. 一次布环境,引起的总结