Android移动开发之【Android实战项目】后台服务Service
桌面应用程序:可见
服务:不可见 长期在后台运行 帮助应用执行耗时的操作
安卓的服务:安卓四大组件之一 不可见 后台长期运行 界面与服务有时候要执行数据交互
文章目录
- 如何创建服务
- 创建一个类 继承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表示停止哪一个服务}}
电话窃听器原理
开发步骤:
创建一个后台运行的服务
启动应用的时候启动服务
在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相关推荐
- android studio开发工具介绍,Android应用开发之Android开发工具介绍、Android Studio配置...
本文将带你了解Android应用开发之Android开发工具介绍.Android Studio配置,希望本文对大家学Android有所帮助. 2.1 Android Studio配置 2.1.1 ...
- android final参数,Android应用开发之Android Jetpack-Navigation 使用中参数的传递方法
本文将带你了解Android应用开发之Android Jetpack-Navigation 使用中参数的传递方法,希望本文对大家学Android有所帮助. 由于使用了Navigation,导致Frag ...
- android中base64加密,Android应用开发之android自带Base64加密解密
本文将带你了解Android应用开发之android自带Base64加密解密,希望本文对大家学Android有所帮助. android项目引用不到以下两个java类 import sun.misc.B ...
- 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...
本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...
- Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...
本文将带你了解Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...
- android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...
本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...
- android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)
本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android 系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...
- android 电量详情,Android应用开发之Android 8.0 电池-)耗电详情获取方法
本文将带你了解Android应用开发之Android 8.0 电池-)耗电详情获取方法,希望本文对大家学Android有所帮助. Android 8.0 电池-)耗电详情获取方法 主要介绍UI位置和基 ...
- android 接口实现方法,Android应用开发之Android 请求网络接口实现方法
本文将带你了解Android应用开发之Android 请求网络接口实现方法,希望本文对大家学Android有所帮助. public class Fragment01 extends Fragmen ...
- android显示通知图标大全,Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除...
本文将带你了解Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除,希望本文对大家学Android有所帮助. android 桌面APP应用图标显示通知消息的数量 ...
最新文章
- Zookeeper 服务注册中心
- 逻辑地址、线性地址、物理地址和虚拟地址
- Git 版本管理工具命令速查
- (6)<a>标签如何实现点击既不刷新也不跳转的功能
- 开源搜索服务 Apache Solr 出现多个高危漏洞
- 史上最全macos安装xgboost教程
- 数据库安全关键技术之数据库脱敏技术详解
- linux/windows对应的软件
- vmware14克隆后UUID相同的解决方法
- 运营商拆除2G基站,老家的老人机还有信号吗?
- 音视频基础:音频(PCM和AAC)
- python中多行语句可以用反斜杠来实现_Python中的多行语句可以使用反斜杠来实现...
- 播布客学习视频_C学习笔记_2_打印输出
- 计算机中级职称能转评讲师,职称评审中的转评问题
- 洛谷P3237 [HNOI2014]米特运输
- 守望账号与服务器失去连接,win10玩守望先锋与服务器一直断开连接的解决方法...
- 股份有限公司章程记载事项有哪些
- 数据分析师,先去考这6 个证书
- 未来,智慧公路引领时代变革!
- 骁龙870和天玑1000+哪个好 天玑1000+和骁龙870对比,哪个更强