android项目教程Service生命周期ppt课件_第1页
android项目教程Service生命周期ppt课件_第2页
android项目教程Service生命周期ppt课件_第3页
android项目教程Service生命周期ppt课件_第4页
android项目教程Service生命周期ppt课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、03进阶篇Android挪动开发工程化教程. 工程十高级用户界面设计 工程十一列表视图ListView 工程十二自定义菜单 工程十三BroadCastReceiver实现广播的接纳与发送目录CONTNETS 工程十四Service生命周期.本章导读Service是Android四大组件中与Activity最类似的组件,它们都代表可执行的程序。Service一旦被启动起来,就与Activity一样,完全具有本人的生命周期。Service与Activity的区别在于:Service不断在后台运转,它没有用户界面,所以绝不会到前台来。因此,假设某个程序组件需求在运转时向用户呈现某种界面,或者该程序需

2、求与用户交互,就需求运用Activity,否那么就应该思索运用Service了。工程十四Service生命周期工程要求了解Service是什么,有什么用途。掌握Service的生命周期,了解大体任务流程。熟习Service的两种启动方式,学会运用Service。工程十四Service生命周期01Service简介Service是Android系统中的四大组件之一,它是一种长生命周期的、没有可视化界面、运转于后台的一种效力程序。比如我们播放音乐的时候,有能够想边听音乐边干些其他事情,当退出播放音乐的运用,假设不用Service,我们就听不到歌了。效力主要用于两个目的:后台运转和跨进程访问。经过启

3、动一个效力,可以在不显示界面的前提下在后台运转指定的工程,这样可以不影响用户做其他的事情。经过AIDL效力可以实现不同进程之间的通讯,这也是效力的重要用途之一。工程十四Service生命周期02Service生命周期Service的生命周期并不像Activity那么复杂,它只承继了onCreate(),onStartCommend(),onDestroy()三个方法,当第一次启动Service时,先后调用了onCreate()和onStart()这两个方法,当停顿Service时,那么执行onDestroy()方法,这里需求留意的是,假设Service曾经启动了,当我们再次启动Service时

4、,不会再执行onCreate()方法,而是直接执行onStart()方法。工程十四Service生命周期Android下的Service生命周期分为未绑定Activity的service和绑定了Activity的service。两种不同service效力的生命周期图示如图14-1所示。图14-1 service生命周期表示图工程十四Service生命周期未绑定Activity的Service必需经过startService()方法启动,生命周期依次包含了创建onCreate(),开场onStartCommand(),销毁onDestory()三个方法。其中创建方法onCreate()和销毁方法

5、onDestory()只被调用一次,开场方法onStartCommand()方法可以被调用多次。绑定了Activity的Service经过bindService()方法启动,生命周期包括创建onCreate()、绑定onBind()、解绑onUnbind()和销毁onDestory()四个方法。其中创建和销毁、绑定和解绑方法是对应的,都只执行一次。工程十四Service生命周期什么是AIDL?AIDL全称是Android Interface Definition Language,这是一种接口定义言语,采用远程过程调用Remote Procedure Call,RPC方式实现。这些效力可以被其

6、他运用程序访问。建立AIDL效力分为以下几个步骤:1在Android工程的Java源目录中建立一个扩展名为aidl的文件。2建立aidl文件的内容正确,ADT会自动生成一个Java接口文件*.Java。3建立一个效力类Service子类。4实现由aidl文件生成的Java接口。5在AndroidManifest.xml文件中配置AIDL效力,标签中android:name的属性值就是客户端要援用的该效力的ID,也就是Intent类构造方法的参数值。03跨进程效力简介工程十四Service生命周期工程十四Service生命周期工程创建01参考前面实验中创建“Helloworld工程的步骤创建一个

7、工程如AndroidCode14,工程目录构造,如图14-2所示。图14-2 工程目录构造图XML规划文件的开发02界面采用相对规划管理器垂直,里面再包含一个表格规划程度,这个表格规划里包含四个Button分别是启动效力、停顿效力、绑定效力、解绑效力,表格规划下面是一个Button退出程序,界面如图14-3所示。1图14-3 界面设置工程十四Service生命周期界面设计完好代码。见书中详细代码2按【Ctrl+S】组合键保管后退出,至此界面文件就编写完成了。3工程十四Service生命周期Java文件的开发03在MainActivity中定义开启效力、停顿效力、绑定效力、解绑效力和退出5个Bu

8、tton按钮并初始化。初始化控件对象,使程序运转时候的控件显示和XML文件中绘制好的控件关联起来,对控件的操作就是对图形化界面上按钮的操作:1工程十四Service生命周期程序由三个类文件组成:MainActivity主界面,MyBroadcastReceiver广播类和MyService效力类。广播类用户接纳程序发送的信息并处置相关操作。Button btnStartService, btnStopService, btnBindService, btnUnbindService,btnExit;工程十四Service生命周期给5个Button按钮设定监听器,单击按钮时触发监听器,对应不同按

9、钮监听器做出不同的呼应。btnStartService = (Button) findViewById(R.id.btn_start_service);btnStopService = (Button) findViewById(R.id.btn_stop_service);btnBindService = (Button) findViewById(R.id.btn_bind_service);btnUnbindService = (Button) findViewById(R.id.btn_unbind_service);btnExit=(Button)findViewById(R.id.

10、btn_exit);工程十四Service生命周期对应五个按钮的intent效力,分别对应启动效力、停顿效力、绑定效力和解绑效力。public void onClick(View v) Intent intent = new Intent();intent.setClass(context, MyService.class);switch (v.getId() / 启动效力case R.id.btn_start_service:context.startService(intent);break;/ 停顿效力case R.id.btn_stop_service:context.stopServ

11、ice(intent);break;工程十四Service生命周期/ 绑定效力case R.id.btn_bind_service:context.bindService(intent, serviceConnection, BIND_AUTO_CREATE);break;/ 解绑效力case R.id.btn_unbind_service:context.unbindService(serviceConnection);break;case R.id.btn_exit:unregisterReceiver(receiver);finish();break;default:break;工程十四

12、Service生命周期public void onReceive(Context context, Intent intent) / TODO Auto-generated method stubString action = intent.getAction();if (action.equals(update) String time = intent.getExtras().getString(time);System.out.println(time);System.out.println(=+mContext);在MyBroadcastReceiver类中重写onReceive方法,

13、该方法用于接纳update更新的广播信息,当程序收到内容为“update的action时输出当前时间:2工程十四Service生命周期public void onCreate() Log.i(TAG, 启动效力);Toast.makeText(mContext, 启动效力, Toast.LENGTH_SHORT).show();/ 开启计数new Thread(new Runnable() Overridepublic void run() / TODO Auto-generated method stubwhile (!flag) try 在MyService类中的关键代码阐明:Servic

14、e类里的代码就是单击不同Button按钮时所触发的相应操作,此效力在后台运转。在MyService类中编写代码,实现开启效力,封锁效力,绑定效力,解绑效力的方法。新建一个Thread线程每隔一秒钟输出当前的准确时间,并用intent传送数据给接纳器运用。3工程十四Service生命周期Thread.sleep(1000);Log.i(TAG, now time= + getSystemTime(); / 发送音讯String str = current time:+getSystemTime();intent = new Intent();intent.setAction(update);in

15、tent.putExtra(time, str);mContext.sendBroadcast(intent); catch (Exception e) / TODO: handle exception ).start();super.onCreate();工程十四Service生命周期在onDestory()方法中新建一个Thread线程暂停1s,然后打印输出“效力停顿:Overridepublic void onDestroy() flag = true;try Thread.sleep(1000); catch (InterruptedException e) / TODO Auto-g

16、enerated catch blocke.printStackTrace();Log.i(TAG, 停顿效力);Toast.makeText(mContext, 停顿效力, Toast.LENGTH_SHORT).show();super.onDestroy();工程十四Service生命周期在onStartCommand方法中输出开场的命令,在log输出结果中可以看到当程序终了时候,不论能否曾经封锁效力,效力都会被终止。public int onStartCommand(Intent intent, int flags, int startId) Log.i(TAG, onStartCom

17、mand().);return super.onStartCommand(intent, flags, startId);工程十四Service生命周期onUnbind方法用于解除效力的绑定,当效力绑定解除,程序退出以后效力也跟着退出。AndroidManifest文件的配置:由于需求运用自定义的效力和全局广播,所以必需在AndroidManifest中添加注册效力和广播的声明:扩展练习04在service中参与一个循环打印音讯,经过startService方式启动效力,查看LogCat输出信息,封锁程序查看LogCat中的信息,如图14-4所示。1工程十四Service生命周期图14-4 循

18、环输出service信息运用bindService方式启动效力,查看LogCat输出信息,封锁程序查看LogCat输出信息,如图14-5所示。2工程十四Service生命周期图14-5 bindService方式效力在程序中参与例如:log.d(debug,1),按照service中各回调函数执行的顺序不同,依次在LogCat中打印输出1、2、3、4,如图14-6所示。3工程十四Service生命周期图14-6 生命周期执行顺序工程验证05将Android开发终端与PC机相连。单击程序图标进入程序,单击“start service按钮开启效力,并查看log输出顺序能否如图14-7所示。1工程十四Service生命周期图14-7 开启效力后的log显示单击“stop service停顿效力,查看LogCat输出能否如图14-8所示。2工程十四Service生命周期图14-8 停顿效力的log显示在开启了效力的情况下直接单击“e运转。重新进入程序,单击“bind service按钮绑定程序,查看log输出顺序,如图14-9所

温馨提示

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

评论

0/150

提交评论