Android后台服务Service
发布日期:2021-06-30 21:21:39 浏览次数:3 分类:技术文章

本文共 3666 字,大约阅读时间需要 12 分钟。

后台服务

桌面应用程序:可见

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

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

如何创建服务:

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启动时调用	@Override	public void onCreate() {		super.onCreate();		Log.v("wang", "OnCreate 服务启动时调用");			}	@Override	public IBinder onBind(Intent intent) {		// TODO Auto-generated method stub		return null;	}	//服务被关闭时调用	@Override	public void onDestroy() {		super.onDestroy();		Log.v("wang", "onDestroy 服务关闭时");	}}

四大组件多需要配置配置

调用服务器

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 {	@Override	protected 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{	@Override	public 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()//重写方法等等			@Override			public 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  就是要指定对那些事件比较关心	}	@Override	public IBinder onBind(Intent intent) {		// TODO Auto-generated method stub		return 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 {	@Override	protected 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);	}}

配置文件里面的铭感操作

服务和子线程的区别

总结:

* 服务是长期在后台运行的

* 开启一个用真的死循环的子线程也是在后台长期运行

*如果一个应用程序有后台的服务在运行,即使你杀掉进程,进程和服务还会自动的复活

* 如果一个应用程序只有后台的子线程运行 杀掉进程进程和子线程都挂了

* 如果你要保证一个后台的操作长期运行1.开启服务 2.在服务里面创建线程

转载地址:https://liwangjiang.blog.csdn.net/article/details/79706513 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android服务器的使用(Service)
下一篇:Android广播接听器(BroadcastReceiver)

发表评论

最新留言

很好
[***.229.124.182]2024年05月03日 04时10分54秒