- 浏览: 332247 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
一:什么是Service
服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,这取决于自身的需要。其它的组件可以绑定到一个服务(Service)上面,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当用户退出媒体选择用户界面,仍然希望音乐依然可以继续播放,这时就是由服务 (service)来保证当用户界面关闭时音乐继续播放的。
它跟Activity的级别差不多,但是他不能自己运行,需要通过某一个Activity或者其他Context对象来调用, Context.startService() 和Context.bindService()。
两种启动Service的方式有所不同。这里要说明一下的是如果你在Service的onCreate或者onStart做一些很耗时间的事情,最好在Service里启动一个线程来完成,因为Service是跑在主线程中,会影响到你的UI操作或者阻塞主线程中的其他事情。
什么时候需要Service呢?比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等。
二:如何使用Service
1.第一种是通过调用Context.startService()启动,调用Context.stopService()结束,startService()可以传递参数给Service。
2.第二种方式是通过调用Context.bindService()启动,调用Context.unbindservice()结束,还可以通过ServiceConnection访问Service。
二者可以混合使用,比如说我可以先startService再bindservice。
三:service生命周期
①onCreate() 创建Service
②onStart(Intent intent, int startId) 启动Service
③onDestroy() 销毁Service
④onBind() 返回一个IBinder接口对象给Service
startService后,即使调用startService的进程结束了,Service仍然还存在,直到有进程调用stopService,或者Service自己自杀(stopSelf())。bindService后,Service就和调用bindService的进程同生共死了,也就是说当调用bindService的进程死了,那么它bind的Service也要跟着被结束,当然期间也可以调用unbindservice让 Service结束。
两种方式混合使用时,如果先是绑定(bind)了,那么启动(start)的时候就直接运行Service的onStrat方法,如果先是启动(start),那么绑定(bind)的时候就直接运行onBind的方法。如果你先绑定(bind)上了,就暂停(stop)不掉了,也就是stopService不能用了,只能先UnbindService,再StopService.所以是先启动(start)还是先绑定(bind)行为时由区别的。比如说你startService了,我bindService了,那么只有你stopService了而且也unbindservice了,这个Service才会被结束。
Android系统将会尝试保留那些启动了的或者是绑定了服务的进程。如果该服务正在进程的onCreate(), onStart(), 或者 onDestroy() 这些方法中执行时, 那么主进程将会成为一个前台进程,以确保此代码不会被停止。如果服务已经开始,那么它的主进程会就重要性而言低于所有可见的进程但高于不可见的进程, 由于只有少数几个进程是用户可见的,所以只要不是内存特别低,该服务不会停止.。如果有多个客户端绑定了服务, 只要客户端中的一个对于用户是可见的,即认为该服务可见。
如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。
stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。
所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy
使用context.bindService()启动Service会经历:
context.bindService()->onCreate()->onBind()->Service running
onUnbind() -> onDestroy() ->Service stop
onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。
所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
所以,在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。
四:启动和停止Service
①启动:startService(Intent intent)来启动Service,这时Service会调用自身的onCreate()方法(该Service未创建),接着调用onStart()方法。
②停止:stopService(Intent intent)来停止Service,这时Service会调用自身的onDestory()方法。
五:绑定Service
调用bindService(Intent service, ServiceConnection conn, int flags)来绑定一个Service,这时Service会调用自身的onCreate()方法(该Service未创建),接着调用onBind()方法返回客户端一个IBinder接口对象。(注意:如果返回null,ServiceConnection对象的方法将不会被调用)
参数①service:Intent对象 。
参数②conn:ServiceConnection对象,实现其onServiceConnected()和onServiceDisconnected()在连接成功和断开连接时处理。
参数③flags:Service创建的方式,一般用Service.BIND_AUTO_CREATE表示绑定时自动创建。
发表评论
-
Android中AsyncTask的简单用法
2012-01-13 16:00 1169在开发Android移动客户端的时候往往要使用多线程来进行操 ... -
Android应用的自动升级、更新模块的实现 .
2011-11-16 14:01 680http://www.eoeandroid.com/threa ... -
一个APK反编译利器Apktool
2011-11-16 13:54 1591一个APK反编译利器Apktool APK 本地化 ... -
自定义Android标题栏TitleBar布局
2011-11-14 14:13 1261很多网友发现自己Android程序的标题栏TitleBar区域 ... -
Android GPS获取地理位置 .
2011-11-14 14:11 863import android.app.Activity; i ... -
android ListView详解
2011-11-14 13:48 1064在android开发中ListView是比较常用的组件,它以列 ... -
Android之Content provider 详解
2011-11-14 13:35 2481Android是如何实现应用程序之间数据共享的?一个应用程序可 ... -
Android源码地址
2011-11-12 19:14 1056http://blog.csdn.net/ilittleone ... -
android之File
2011-11-11 22:39 20111:Fileservice package cn.itcas ... -
Android知识补漏
2011-11-09 22:33 01:AndroidManifiest.xml < ... -
深入剖析Android消息机制
2011-11-09 14:13 969在Android中,线程内部或者线程之间进行信息交互时经常会使 ... -
Android之Handler详解(四)
2011-11-09 14:00 1293d、自己创建新的线程,然后在新线程中创建Looper,主线程调 ... -
Android之Handler详解(三)
2011-11-09 13:58 1372c、将消息队列绑定到子线程上,主线程只管通过Handl ... -
Android之Handler详解(二)
2011-11-09 13:54 1670二:sendMessage版本的Handl ... -
Android之Handler详解(一)
2011-11-09 13:22 2295一个Handler允许你发送和处理消息(Message)以及 ... -
关于StartActivityForResult方法的使用
2011-10-31 17:11 1109根据方法名可知 这个方法是要得到启动后的Activity返回的 ... -
Android 悬浮Activity并可拖动(访悬浮歌词)
2011-10-24 16:23 2112天天动听, 这款Android手机上的音乐播放器,相信不少朋友 ... -
Android GWES
2011-10-24 16:13 1205第八章 Android GWES 8.1 View Syst ... -
Android系统服务-WindowManager
2011-10-24 16:10 1454WindowManager是Android中一个重要的服务 ... -
http通信
2011-10-15 17:31 1103HTTP(HyperText Transfer Proto ...
相关推荐
在Android系统中,Home键是用户最常用的导航键之一,用于快速返回主屏幕。然而,在特定的应用场景下,比如玩游戏时,尤其是像“王者荣耀”这样的竞技游戏,误触Home键可能会导致游戏进程中断,影响玩家体验。为了...
在Android应用开发中,Service是一种在后台运行的组件,它不具有用户界面,但可以执行长时间的任务或与其他组件进行通信。在某些情况下,我们可能需要一个Service去执行一些任务,并在任务完成后更新UI。这时,我们...
在Android开发中,服务(Service)是四大组件之一,它在后台执行长时间运行的操作而无需与用户交互。本练习旨在帮助初学者深入理解和熟练运用Android中的各种服务类型及其使用场景。我们将通过一个示例项目来探讨...
在Android应用开发中,Service是四大组件之一,它在后台执行长时间运行的操作,不与用户交互。本篇文章将深入探讨“Android学习之路——7.Service”,分析Service的基本概念、使用方式以及常见应用场景,同时结合...
《王家林的Android软硬...总的来说,该课程是一次全方位的Android技术探索之旅,不仅传授技术知识,更注重培养学员的设计思维和商业哲学,对于想要在Android领域深化发展的专业人士来说,是一次不可多得的学习机会。
最后,文档列出了参考文献,这些文献可为深入研究和应用Web Service在Android客户端的实现提供更进一步的理论支持和技术参考。 综上所述,Android客户端访问Web Service的实现涉及对Android平台的了解,Web Service...
本文包含一个109页的PPT讲述Android程序结构设计的理论和方法,附带一个项目案例ProgramStructureGPS.20190922.zip; 其中的内容有: Android app的界面的树结构与对界面的访问; Activity和Activity通信的方法 ...
- **AndroidService**:指的是运行在System Server进程中的系统服务,例如Activity Manager Service、Package Manager Service等。这些服务为整个系统提供了关键功能,是构建在Dalvik VM之上的组件,通过JNI调用底层...
通过分析这些代码,我们可以看到如何实际应用上述理论,实现客户端和服务端的通信。 总的来说,AIDL是Android平台中进行进程间通信的关键技术,理解并熟练使用AIDL,能够帮助开发者构建更加健壮和高效的Android应用...
5. **服务(Service)**:服务是Android中用于执行长时间运行操作而不提供用户界面的组件。开发者需要了解如何创建、控制和管理后台服务。 6. **广播接收器(BroadcastReceiver)**:广播接收器用于响应系统发出的广播...
【Android手机软件开发】课程是针对计算机应用技术专业的高职2011软件班设计的专业课程,总学时为64学时,分为理论和实践两部分。本课程旨在使学生熟练掌握Android开发所需的基本理论和技术,包括Java语言基础、...
2. **Android之Service**: Service是Android系统中的一个关键组件,用于在后台执行长时间运行的任务,不与用户界面直接交互。刘老师的这部分源码可能涉及到创建自定义服务,处理音频播放、数据同步、定时任务等场景...
《Professional Android 4 Application Development》是一本针对Android应用开发的专业指南,由Rob Miles撰写,是Android开发者中的经典之作。这本书全面覆盖了Android 4(Ice Cream Sandwich)版本的应用开发技术,...
**Android Studio 结课大作业详解** Android Studio 是Google推出...在实际操作中不断探索和实践,将理论知识与实际相结合,是成为一名优秀Android开发者的关键步骤。希望这份资料能够对你的学习之路提供有力的支持!
"Android驾照考试系统"是一款专为驾驶学习者设计的应用程序,它涵盖了驾照理论考试的核心功能,旨在帮助用户高效备考。该系统通常会包括以下几个主要功能模块: 1. 题库练习:系统会包含全国统一的驾驶理论考试题库...
《Android平台开发之旅》这本书通过深入浅出的方式,带领开发者探索Android的世界。本压缩包"Android平台开发之旅源码.zip"包含了书中各个章节所涉及的示例代码,帮助读者更好地理解和实践书中的知识点。 1. **...
"Android小项目集合100多个"涵盖了以上知识点的实践应用,通过这些项目,开发者可以深入学习每个概念,并将理论知识转化为实际操作,从而在Android开发道路上更进一步。每个项目都是一个独立的模块,涵盖不同的功能...
4. **Android系统服务**:分析系统服务如Activity Manager、Power Manager、Battery Service等,它们是如何管理设备状态和用户交互的。 5. **JNI(Java Native Interface)**:学习如何使用JNI在Java代码和C/C++...
开发者主要在应用框架层和应用层工作,通过Java或Kotlin语言编写代码,利用Activity、Service、BroadcastReceiver、ContentProvider等组件进行功能实现。 Android Studio的安装和配置是学习的第一步。下载最新版本...
总之,"Android寻味之旅App源码"是一个宝贵的教育资源,对于想要学习Android开发的学生来说,它可以作为实践操作的实例,帮助他们巩固理论知识,提升动手能力。通过分析和修改这个源码,学生能够更深入地理解Android...