【Android知识点整理】四大组件——服务

服务

、 Anroid用于实现程序后台运行的解决方案

服务依赖于创建该服务的应用。
服务不会自动开启线程,所以为了防止线程堵塞,需要自己手动在服务内部创建子线程,
关于线程安全
1、线程安全:
指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不存在执行程序时出现意外结果。
2、线程不安全:
是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
安卓的UI是线程不安全的,所以更新UI必须在主线程中进行。
为了达到在子线程中执行任务并根据其结果更新UI  需要使用Android的异步消息处理机制
Android的异步消息处理

 1. Message: 用于携带信息
 2. Handler: 发送和处理消息 需要进行UI操作时 实例化Message,设置Message的具体信息,
 然后调用sendMessage发送该消息,最后在handleMessage中进行具体的UI操作
 3. MessageQueue:消息队列,用于存放Handler发送的消息(每个线程只有一个)
 4. Looper 取出并传递MessageQueue中的消息


AsyncTask(params,progress,result):
	AsyncTask中的四个方法
	1.onPreExecute()	用于初始化UI操作
	2.doInBackgroud(params....)该方法中的所有代码在子线程运行,多用于处理耗时任务,
	完成后return 结果。	
 	若第三个参数为void ,则不返回。该方不可用于执行UI操作,若要反馈执行进度 
 	可以调用publishProgress
 	3.onProgressUpdate(progress) 若后台调用了publishProgress则该方法会被调用,
 	可以利用后台传递的参数来进行UI更新。
 	4.onPostExecute(Result)
		可以利用返回的数据进行一些UI操作,比如提醒任务执行结果、关闭进度条对话框等。

、 服务的基本用法

直接新建一个Service  
Exported:表示是否允许其它程序调用该服务
Enabled:  表示该服务是否启动
服务类都继承自Service
onCreate()创建时调用
onStartCommand()每次启动时调用
onBind、onUnbind	服务与活动的绑定与解绑
前台的服务 可以以通知的形式显示
使用IntentService类可以自动开启和停止线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值