2015android基础入门教程版打包合集android4.2.2service进阶_第1页
2015android基础入门教程版打包合集android4.2.2service进阶_第2页
2015android基础入门教程版打包合集android4.2.2service进阶_第3页
2015android基础入门教程版打包合集android4.2.2service进阶_第4页
2015android基础入门教程版打包合集android4.2.2service进阶_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、title: Android基础入categories: 4.2.2 Service进基础入门4.2.2 Service本节引Android基础入本节引title: Android基础入categories: 4.2.2 Service进基础入门4.2.2 Service本节引Android基础入本节引4.2.2 Service进entService的使Activity与Service通一个简单前台服务的实4.简单定本节小结线程的实entService的使在上一节已经知道了如何去定义和启动Service,但是如直接耗时线程放到Service中的onStart()方法中,虽然可以这样做,但是很容

2、会引起ANR异常(Application Not Responding),而AndroidService有下面这样一段话在介上节学习了re的生命周期,以及两种启动Sere的两种方法,本节继续来深入了解ere中的eneriere的使用实例:前台服务与轮询的实现!直接翻译于是乎,Android提供了解决上述问题的替代品,就是下面要讲直接翻译于是乎,Android提供了解决上述问题的替代品,就是下面要讲entService是继承与Service并处理异步请求的一个类,entService中一个工作线程来处理耗时操作,请求会加入队工作流程再接着是代码演示,网上大部分的代码都是比较ServiceentS

3、ervice的中Thread.sleep(20000)然ANR异常,的可以自己写代码试试这里的话只演示entService的用法publicclassTestService3extends ntentService private final String TAG = hehe;public.客户端通过ent)来启并不需要手动地区控制enSere当任务执行完后,enSere会自动停止;可以启动enSr多次每个耗时操作会以工作队列的方式在enSre的 onHanden回调方法中执行并且每次只会执行一个工作线程执行完,再到二样!Service不是一个单独的进程,它和它的应用程序在同一个进程Serv

4、ice不是一个线程,这样就意味应该避免在Service中进行耗时操.protected void onHandle ntent(方ent).protected void onHandle ntent(方ent)./ ntent是从Activity发过来的,携带识别参数,根据参数不同执行不同的任Stringaction if(action.equals(s)Log.i(TAG,启动serviceelseif(action.equals(s2)Log.i(TAG,启动service2); elseif(action.equals(s3)Log.i(TAG,启动catch(nterruptedExc

5、eption public Binder onBind(ntent returnent)public void onCreate() mand(d)ent,flags,start publicvoidseenabled)public void onDestroy() super.onDestroy( ;下serviceandroid:name=.TestService3.entfilterpublicclass下serviceandroid:name=.TestService3.entfilterpublicclassMainAtectedvoidonCreat

6、e(Bundle super.onCreate(savedsavede)ntentit =new =newb.putString(param,sit.putExtras(b.ntentit2=new 2 =newb2.putString(param,ntentit3=new 3 =newb3.putString(param,/接着启动多次 ntentService,每次启动,/但始终只有一个 ntentService实例 startService(it ); 2.Activity与Service通的任务的进度!那么这肯定是需要2.Activity与Service通的任务的进度!那么这肯定是需要

7、 此时应该自定义一3.一个简单前台服务的实运行的publicvoid 3.一个简单前台服务的实运行的publicvoid Notification.Builder localBuilder=new .ent(Pending0,wntent(this,MainActivity.class),0); localBuilder.setSmall.localBuilder.setTicker( oreground Servi start oreground(,.4.简单定线程的实除了上述4.简单定线程的实除了上述的前台服务外,实际开发中Service还有一种常见的用法,就是执行定时任务比如轮询,就是每

8、间隔一段时间就请求一次服务器,确认客户端状态或者进行信息更等!而Android中提供的定时方式有两种使用Timer类与Alarm机制使用流程前者不适合于需要长期在运行的定时任务,一旦休眠,er中的定时任务 就无法运行;ar则不存在这种情况,他具有唤醒C的功能,另外,也要区分唤醒与屏幕唤醒!参数详解type,long ent 参数详解type,long ent 有五个可选值闹钟在睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始状态值为;为;闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为值为;表示闹钟在关机状态下也能正常进行提示功能,所以是个状态中用的最多

9、的状态一,该状态下闹钟也是用绝对时间,状态值为;不过本状态好像受SDK并不支持;Step 1:获得AlarmManager manager = (AlarmManager) Step 2:通过set方法设置定时任anHour = 2 * long triggerAtTime = SystemClock.elapsedRealtime() + anHour; Step 3:定义一个mand中开辟一条事务线程,用于处理一些定时逻Step 4:定义一个Broadcast(广播),用于启动最后别忘了,在AndroidManifest.xml中对这Service与Boradcast进SystemCloc

10、k.elapsedRealtime如果是RTC的就用:System.currentTimeMillis()可获得从1970.1.1 0点到从4.4版本后(API19),AlarmSystemClock.elapsedRealtime如果是RTC的就用:System.currentTimeMillis()可获得从1970.1.1 0点到从4.4版本后(API19),AlarmpublicclassLongRunningServiceextends Service . (Context c,ent对象的获取就应该采用 Pending(Context就应该采用 Pendingent.getActiv

11、ity(Context c,.public Binder onBind(ntent return null;ent)mand(start d)/.public Binder onBind(ntent return null;ent)mand(start d)/这里开辟一条线程,用来执行具体的逻辑操作Thread(newRunnable() publicvoid run() Log.d(BackService,new.AlarmManager manager =(AlarmManager)./这里是定时的,这里设置的是每隔两秒打印一次时间= =,自己改 anHour = 2 * 000;long triggerAtTime = SystemClock.elapsedRealtime()ntent i = new ntent(this,AlarmReceiver.class);Pending ntent pi =Pending ntent.getBroadcast(this,0,i,manager.set(AlarmManager.ELAPSED_REALT ME_WAKEUP,ent,flags,start publicc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论