- 浏览: 121373 次
- 性别:
- 来自: 广州
文章分类
最新评论
在Service的生命周期中,被回调的方法比Activity少一些,只有onCreate, onStart, onDestroy,
onBind和onUnbind。
通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
2 通过bindService
Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。
所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。
需要注意的是如果这几个方法交织在一起的话,会出现什么情况呢?
一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。
如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。
如果service运行期间调用了bindService,这时候再调用stopService的话,service是不会调用onDestroy方法的,service就stop不掉了,只能调用UnbindService, service就会被销毁
如果一个service通过startService 被start之后,多次调用startService 的话,service会多次调用onStart方法。多次调用stopService的话,service只会调用一次onDestroyed方法。
如果一个service通过bindService被start之后,多次调用bindService的话,service只会调用一次onBind方法。
多次调用unbindService的话会抛出异常。
15. 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
这个问题问的很山寨.默认不做任何处理,B里面的音乐都能播放.
遇到问题, 可以随机应变,灵活发挥,多考虑些细节,比如说这个题就可以这样说,说说你对startActivityForResult的理解()
A开启B的时候,用startActivityForResult()方法, B返回的时候把播放的状态信息返回给A ,A继续播放音乐.
16. 什么是IntentService?有何优点?
普通的service ,默认运行在ui main 主线程
Sdk给我们提供的方便的,带有异步处理的service类,
异步处理的方法 OnHandleIntent()
OnHandleIntent() 处理耗时的操作
17. 什么时候使用Service?
拥有service的进程具有较高的优先级
官方文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该service已经被启动(start)或者客户端连接(bindService)到它。当内存不足时,需要保持,拥有service的进程具有较高的优先级。
1. 如果service正在调用onCreate, onStartCommand或者onDestory方法,那么用于当前service的进程相当于前台进程以避免被killed。
2. 如果当前service已经被启动(start),拥有它的进程则比那些用户可见的进程优先级低一些,但是比那些不可见的进程更重要,这就意味着service一般不会被killed.
3. 如果客户端已经连接到service (bindService),那么拥有Service的进程则拥有最高的优先级,可以认为service是可见的。
4. 如果service可以使用startForeground(true)方法来将service设置为前台状态,那么系统就认为是对用户可见的,并不会在内存不足时killed。
如果有其他的应用组件作为Service,Activity等运行在相同的进程中,那么将会增加该进程的重要性。
1.Service的特点可以让他在后台一直运行,可以在service里面创建线程去完成耗时的操作. 天气预报 widget TimerTask Timer 定期执行timertask
2.Broadcast receiver捕获到一个事件之后,可以起一个service来完成一个耗时的操作.
Broadcast receiver生命周期 和 响应时间很短
3.远程的service如果被启动起来,可以被多次bind, 但不会重新create. 索爱手机X10i的人脸识别的service可以被图库使用,可以被摄像机,照相机等程序使用.
onBind和onUnbind。
通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
2 通过bindService
Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。
所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。
需要注意的是如果这几个方法交织在一起的话,会出现什么情况呢?
一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。
如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。
如果service运行期间调用了bindService,这时候再调用stopService的话,service是不会调用onDestroy方法的,service就stop不掉了,只能调用UnbindService, service就会被销毁
如果一个service通过startService 被start之后,多次调用startService 的话,service会多次调用onStart方法。多次调用stopService的话,service只会调用一次onDestroyed方法。
如果一个service通过bindService被start之后,多次调用bindService的话,service只会调用一次onBind方法。
多次调用unbindService的话会抛出异常。
15. 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
这个问题问的很山寨.默认不做任何处理,B里面的音乐都能播放.
遇到问题, 可以随机应变,灵活发挥,多考虑些细节,比如说这个题就可以这样说,说说你对startActivityForResult的理解()
A开启B的时候,用startActivityForResult()方法, B返回的时候把播放的状态信息返回给A ,A继续播放音乐.
16. 什么是IntentService?有何优点?
普通的service ,默认运行在ui main 主线程
Sdk给我们提供的方便的,带有异步处理的service类,
异步处理的方法 OnHandleIntent()
OnHandleIntent() 处理耗时的操作
17. 什么时候使用Service?
拥有service的进程具有较高的优先级
官方文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该service已经被启动(start)或者客户端连接(bindService)到它。当内存不足时,需要保持,拥有service的进程具有较高的优先级。
1. 如果service正在调用onCreate, onStartCommand或者onDestory方法,那么用于当前service的进程相当于前台进程以避免被killed。
2. 如果当前service已经被启动(start),拥有它的进程则比那些用户可见的进程优先级低一些,但是比那些不可见的进程更重要,这就意味着service一般不会被killed.
3. 如果客户端已经连接到service (bindService),那么拥有Service的进程则拥有最高的优先级,可以认为service是可见的。
4. 如果service可以使用startForeground(true)方法来将service设置为前台状态,那么系统就认为是对用户可见的,并不会在内存不足时killed。
如果有其他的应用组件作为Service,Activity等运行在相同的进程中,那么将会增加该进程的重要性。
1.Service的特点可以让他在后台一直运行,可以在service里面创建线程去完成耗时的操作. 天气预报 widget TimerTask Timer 定期执行timertask
2.Broadcast receiver捕获到一个事件之后,可以起一个service来完成一个耗时的操作.
Broadcast receiver生命周期 和 响应时间很短
3.远程的service如果被启动起来,可以被多次bind, 但不会重新create. 索爱手机X10i的人脸识别的service可以被图库使用,可以被摄像机,照相机等程序使用.
发表评论
-
stopSelf()与stopSelf(startId)的区别
2016-04-14 14:44 1113startId:表示启动服务的次数 stopSelf(sta ... -
安装/卸载/替换成功广播接收
2016-01-08 11:59 813<receiver android:name=" ... -
ContentProivder
2015-12-09 09:26 489ContentProvider 我们实现了其中的几个方法 ... -
Android获取网络时间
2015-11-19 11:27 11881、实时获取: LocationManager locatio ... -
android animation知识
2015-11-14 11:47 580<?xml version="1.0" ... -
代码中设置android:drawableTop等
2015-11-14 10:42 1025btnAttachment.setCompoundDrawab ... -
自定义View
2015-11-04 15:09 406一般来说,自定义View都会去重写onMeasure()方法, ... -
SimpleOnGestureListener
2015-11-04 12:03 559onScroll()缓慢滑动,手指滑动屏幕的过程中执行; on ... -
设置dialog在底部并宽度全屏显示
2015-11-02 11:53 2295pickerDialog.setContentView(vie ... -
横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
2015-10-29 10:51 1807在之前的版本中都是在Manifest文件中设置Activity ... -
Dialog注意点
2015-10-28 17:14 530dialog:setCancelable与setCancele ... -
清除setBackgroundResource的原有值
2015-10-23 16:50 1173setBackgroundResource(0);清除原有的s ... -
接收隐式意图
2015-10-22 11:29 551想接收隐式意图,必须在他们的意图过滤器中配有:android. ... -
严苛模式
2015-10-14 20:25 1379//启用严苛模式,StrictMode可以用于捕捉发生在应用程 ... -
Android使用Animation完成动画保留最后一帧的办法
2015-09-08 10:43 2442在动画效果的xml中,在set标签中加上一条android:f ... -
控件getHeight和getWidth等于0的解决办法
2015-09-07 17:27 1443//监听layoutContainer是否初始化完成 l ... -
Service和Thread的区别?
2015-08-19 13:25 501servie是系统的组件,它由系统进程托管(servicema ... -
避免内存泄露
2015-08-18 19:21 4981、尽量避免在Activity使用static。 2、能使用A ... -
需要context的时候用activity还是application?
2015-08-17 17:02 768需要context的时候用activity还是applicat ... -
谈谈UI中, Padding和Margin有什么区别?
2015-08-10 17:18 1103Padding 文字对边框, margin是控件与控件之间的距 ...
相关推荐
【Android服务Service详解】 在Android应用开发中,Service是四大组件之一,用于执行长时间运行的任务,如后台音乐播放、网络数据下载等。Service不同于Activity,它没有用户界面,但可以在后台持续运行,即使用户...
本文档主要讲述的是Android服务Service_详解;服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示...
## Android服务Service详解 ### 8.1 Service起步 Service是Android应用程序组件的重要组成部分,它主要用于在后台执行任务,不依赖于用户界面。Service通常用于执行长时间运行的操作,如下载数据、播放音乐或处理...
【Android服务Service详解】 在Android应用开发中,Service是一个至关重要的组件,它允许开发者在后台执行长时间运行的任务,而无需用户界面。Service主要用于两大场景:后台任务处理和跨进程通信。本篇将深入探讨...
Android服务(Service)是Android操作系统中四个核心应用程序组件之一,其他三个分别是Activity、BroadcastReceiver和ContentProvider,它们在Android应用开发中的作用和使用场景各不相同。Service的作用主要体现在...
在Android应用开发中,服务(Service)是一种在后台运行的组件,它不具有用户界面,但可以执行长时间的任务,如播放音乐、网络通信等。Service生命周期中的关键方法包括`onStartCommand()`和`onBind()`,前者用于...
在Android应用开发中,`Service`...理解并熟练使用`Service`是Android开发中的关键技能,正确使用服务可以提升应用性能和用户体验。在设计服务时,应充分考虑其生命周期、并发处理和资源管理,以实现高效、稳定的应用。
10.1 Service简介 374 10.1.1 创建、配置Service 374 10.1.2 启动和停止Service 376 10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) ...
在Android应用开发中,`Service` 是一个至关重要的组件,它允许应用程序在后台长时间运行,即使用户与应用程序的交互界面(如Activity)已关闭。在"Android学习之Service练习"中,我们将深入探讨如何创建、启动和...
综上所述,QT for Android下Service的创建是一项涉及多层技术融合的任务,包括Qt编程、Android原生服务的理解、JNI编程以及跨平台通信。通过熟练掌握这些技能,开发者可以构建出功能强大且高效的Android应用,充分...
总之,Android Service是实现后台操作的重要工具,通过合理的使用和服务生命周期管理,可以为用户提供高效、稳定的后台服务。而 Binder 机制则让Service具备了跨进程通信的能力,极大地扩展了Service的应用场景。...
在Android开发中,远程服务(Remote Service)是一种可以让应用程序组件在其他进程中运行的服务,通常用于实现跨进程通信(IPC,Inter-Process Communication)。这个概念是Android系统为了支持不同应用之间的数据...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
在Android应用开发中,Service是四大组件之一,用于在后台长时间运行操作,比如播放音乐、网络通信等。然而,如果不加以控制,用户或者系统可能会多次启动同一个Service,导致不必要的资源消耗和服务的异常行为。本...
在Android开发中,Service是四大组件之一,它用于在后台执行长时间运行的操作,而不与用户交互。本篇文章将深入探讨“android学习之Service启动1”的主题,主要关注Service的启动方式及其基本用法。 首先,Service...
在Android开发中,Service是应用程序组件之一,用于在后台执行长时间运行的操作,即使用户与应用程序交互的界面已关闭。本篇文章将深入探讨Android中的Service,分析不同类型的Service及其特性,并对比它们之间的...
在Android开发中,服务(Service)是一个至关重要的组件,它允许应用程序在后台执行长时间运行的操作,即使用户没有与应用交互。本示例“Android local service demo”聚焦于本地服务(Local Service),它是Android...