- 浏览: 411594 次
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
startService:
正常调用:onCreate->onStart
取消绑定:onDestroy
如果调用者自己直接退出而没有调用stopService,则Service会一直在后台运行,直到下次调用者再启动起来,并明确调用stopService
bindService
正常调用:onCreate->onBind
取消绑定:onUnbind->onDestroy
先startService,再bindService
onCreate->onStart->onBind(onCreate只调用一次)
先stopService 再unbindService
点stopService不起作用,点unbindService后,立即输入2条:
onUnbind->onDestroy
如果先unbindService再stopService
则顺序输出:onUnbind->onDestroy
先bindService再startService
onCreate->onBind->onStart(onCreate只调用一次)
先stopService再unbindService
点stopService不起作用,点unbindService后,立即输入2条:
onUnbind->onDestroy
如果先unbindService再stopService
则顺序输出:onUnbind->onDestroy
=======================================================================
adndroid service生命周期:
一、context.startService(Intent)调用:
onCreate()-->onStart()
1、onStart()后调用bindService该service则调用onBind(),调用onBind以后调stopService将无法释放该service必须再调unbindService才触发onUnbind()-->onDestroy()
bindService后如果没有调用unbindService就退出activity,则只会调用unbind()方法,并且无法释该service
结论:如果先startService再bindService,则只有调用unbindService和stopService了后才能释放该service,否则只调用其中一个无法释放该service
释放顺序1:unbindService-->unBind()-->stopService-->onDestroy()
释放顺序2:stopService-->unbindService-->unBind()-->onDestroy()
释放顺序3:stopService-->推出active-->unBind()-->onDestroy()
2、onStart()后调用unbindService,unbindService方法会抛异常,该service对象会消失,没有调用生命周期中得任何方法,
异常抛出后会自动调用onCreate()-->onStart()创建对象
3、onStart()后调用stopService释放该service,执行顺序:onDestroy()
4、onStart()后调用startService不会创建新的service,执行顺序:onStart()
执行顺序列表(on开头的方法位service生命周期方法,其他为context对象方法):
1、context.startService(Intent)-->onCreate()-->onStart()-->context.unbindService()(方法会抛异常)-->onCreate()-->onStart()
2、context.startService(Intent)-->onCreate()-->onStart()-->context.stopService-->onDestroy()
3、context.startService(Intent)-->onCreate()-->onStart()-->context.startService-->onStart()
4、context.startService(Intent)-->onCreate()-->onStart()-->context.bindService()-->onBind-->context.unbindService-->unBind()-->context.stopService-->onDestroy()
5、context.startService(Intent)-->onCreate()-->onStart()-->context.bindService()-->onBind-->context.stopService-->context.unbindService-->unBind()-->onDestroy()
6、context.startService(Intent)-->onCreate()-->onStart()-->context.bindService()-->onBind-->context.stopService-->退出active-->unBind()-->onDestroy()
二、context.bindService()调用:
1、context.bindService()-->onCreate()-->onBind()-->context.unbindService()-->unBind()-->onDestroy()
2、context.bindService()-->onCreate()-->onBind()-->context.stopService
3、context.bindService()-->onCreate()-->onBind()-->context.startService-->onStart()
4、context.bindService()-->onCreate()-->onBind()-->context.startService()-->context.unbindService-->unBind()-->context.stopService-->onDestroy()
5、context.bindService()-->onCreate()-->onBind()-->context.startService()-->context.stopService-->context.unbindService-->unBind()-->onDestroy()
6、context.bindService()-->onCreate()-->onBind()-->context.startService()-->context.stopService-->退出active-->unBind()-->onDestroy()
综合以上2点,在对service调用时最好只用一种方式,start或者bind,如果使用了2种方式,2种方式得到的是同一个service对象,并且必须是2种方式都调用了退出方式才能释放service
bind方式默认退出activity则启动释放service
发表评论
-
直接拿来用!最火的Android开源项目整理
2015-09-16 10:13 600一、代码库 1、from 代码家 整理比较好的源 ... -
探讨android更新UI的几种方法
2014-06-09 23:27 615今天讲的内容非常简单,只是讲讲有关于android界面更新的 ... -
Android 滑动切换页面 以及屏幕手势
2014-05-08 17:49 525手机进入智能机时代,触摸屏也已成为主流之势,原来的手机按键也 ... -
android 用Achartengine 作图
2014-05-08 16:55 760Achartengine 是google的一 ... -
Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
2014-05-08 16:28 768Animation的4个基本动画效果 What is An ... -
java.lang.ClassNotFoundException: Didn't find class "android.support.v4.view.Vie
2014-05-06 14:43 2931Android错误:Caused by: java.lang ... -
Android Socket通信如何设置超时时间
2014-05-06 14:14 1079其实关于这个问题可能用到的人不会很多,不过我在这里还是说说。 ... -
【转】Android本地语音识别引擎PocketSphinx-语言建模
2014-02-13 10:35 1829Android本地语音识别引擎PocketSphinx- ... -
关于build.prop原始Dalvik虚拟机设定与调整
2013-09-05 10:40 1260原厂S3 台版 1GB Ramsystem/build.pro ... -
Android中Service与IntentService的使用比较
2013-09-04 15:24 1202该博客来自网络——— ... -
android 应用程序Activity之间数据传递与共享的几种途径
2013-08-01 17:24 9051.基于消息的通信机制 Intent ---boud ... -
android数据通信方式
2013-08-01 17:15 911http://www.itkee.com/develope ... -
“android.intent.category.DEFAULT”的目的是什么?
2013-07-31 16:43 5381、要弄清楚这个问题,首先需要弄明白什么是implicit( ... -
集成拨号盘,2句话的事情
2013-07-30 15:45 601<intent-filter> < ... -
Android TabHost动态加载内容总结
2013-07-25 17:49 954前面用继承TabActivity的方法很好的完成了,TabHo ... -
[Android实例] android json
2013-07-17 15:20 653import java.io.ByteArrayOutput ... -
android json解析及简单例子
2013-07-17 15:19 931JSON的定义: 一种轻量级的数据交换 ... -
AsyncTask的用法-UI刷新发放
2013-07-15 14:50 665在开发Android应用时必须遵守单线程模型的原则: A ... -
java.lang.OutOfMemoryError处理错误
2013-07-15 14:41 671java.lang.OutOfMemoryError异常解决 ... -
关于android.view.WindowLeaked异常的解决方案
2013-07-15 10:34 613Android.view.WindowLeaked按字面了解, ...
相关推荐
总的来说,理解并熟练掌握Service的生命周期和启动方式是Android开发中的重要技能,它有助于优化应用性能,减少资源浪费,并实现高效的服务管理。在实际项目中,合理运用Service可以帮助我们实现后台任务的异步处理...
这两种方式对Service的生命周期有着不同的影响。 1. **startService()启动模式** 当通过`startService()`方法启动Service时,Service会经历以下生命周期: - `onCreate()`: Service首次创建时调用,用于初始化...
Service有两种主要的启动方式:显式启动(Explicit Start)和隐式启动(Implicit Start)。本篇文章将深入探讨这两种启动方式,并通过实例代码进行演示。 **一、显式启动(Explicit Start)** 显式启动Service是最...
有两种方式连接到Service:`startService()`和`bindService()`。`startService()`用于启动Service并执行一次性任务,而`bindService()`则建立一个连接,使Activity能够与Service进行交互。当使用`bindService()`时,...
在Android系统中,Service是一种可以在后台长时间运行的组件,它不提供用户界面,但可以执行各种任务,如播放音乐、网络通信等。当设备启动时,我们有时希望某些Service能够自动启动,以便立即开始执行预定的任务,...
在Android应用开发中,服务(Service)是一种非常重要的组件,它允许你在后台执行长时间运行的操作,即使用户已经离开你的应用程序。本示例将探讨“startService”方式启动Android服务的基本概念、工作原理以及如何...
以下是一个关于Service生命周期的详细解析,结合代码示例来阐述如何在Android中操作Service。 1. **Service生命周期概述** Service的生命周期主要包含以下几个阶段:onCreate()、onStartCommand()、onBind()、...
服务的有两种启动方式,对应两个生命周期 startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和...
在Service类中,`onStartCommand`是处理启动命令的主要入口,它接收Intent参数并返回一个整型值,这个返回值决定了Service的生命周期和行为。开发者通常在重写这个方法时,会进行业务逻辑处理。 防止`startCommand`...
Service的生命周期、两种启动方法的区别 一、A started service onCreate, onStartCommand, onBind 和 onDestroy。这几个方法都是回调方法,都是由Android操作系统在合适的时机调用的,并且需要注意的是这几个回调...
总结起来,理解并掌握Service的启动方式和生命周期管理是Android开发中的重要环节。在实际应用中,根据需求选择合适的启动模式,并确保服务的运行效率和用户体验。通过`com.njupt.zhb.MusicPlay`这样的练习,可以...
本项目"Android service开机自动启动"提供了一个示例,演示了如何创建这样的服务,并确保其在Android 4.0(Ice Cream Sandwich)及更高版本上完美运行。 一、服务基础 1. 创建服务:首先,你需要创建一个继承自`...
在Android应用开发中,Activity和Service是两个至关重要的组件,它们各自承载着不同的功能和应用场景。本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行...
总之,Android Service是实现后台操作的重要工具,通过合理的使用和服务生命周期管理,可以为用户提供高效、稳定的后台服务。而 Binder 机制则让Service具备了跨进程通信的能力,极大地扩展了Service的应用场景。...
理解并熟练掌握Service的生命周期及其启动方式对于开发Android应用至关重要,尤其是处理需要在后台持续运行的任务或需要与其他应用进行通信的场景。通过合理使用Service,开发者可以创建高效且用户友好的应用程序。
服务的有两种启动方式,对应两个生命周期 startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和...
"Android系统在新进程中启动自定义服务过程(startService)的原理" 在 Android 系统中,startService 函数是一个非常重要的函数,它允许开发者在新进程中启动自定义服务。这项技术可以将一些计算型逻辑从主进程中...
5. **与Service通信**: 有两种主要方式与Service通信: - ** Binder: 如果Service需要与AppWidget或其他组件进行复杂交互,可以实现`Binder`接口,并在Service中提供。这样,其他组件可以通过`bindService()`方法...
总结,要在Android Studio中实现Service在app退出后继续运行并开机自启动,需要理解Service的生命周期,正确配置BroadcastReceiver,以及采取保活策略。同时,对App的卡死崩溃进行监控和处理,以提升用户体验和应用...
了解了这两种启动Service的方式后,开发者可以根据实际需求选择合适的方法。`startService`适用于后台运行且不需要与启动它的组件保持连接的任务,而`bindService`则适用于需要实时交互的场景。在使用Service时,...