Service相关

Service一直在后台运行,没有用户界面,所以绝不会到前台来。如果某个程序组件要在运行时间向用户呈现某种界面,或该程序需要与用户交互,就需要使用Activity,否则就应该考虑使用Service

ServiceActivity一样,有自己的生命周期。


开发Service只需要两个步骤:

1>定义一个继承Service的子类

2>在AndroidManifest.xml文件中配置该Service,配置Service使用<service.../>元素,配置Service时也可为<service.../>元素配置<intent-filter.../>子元素,用于说明该Service可被哪些Intent启动

Service系列生命周期方法:

IBinder onBind(Intent intent):该方法是Service子类必须实现的方法。该方法返回一个有效的IBinder对象,应用程序可通过该对象与Service组件通信

Void onCreate():当该Service第一次被创建后将立即回调该方法

Void onDestroy():当该Service被关闭之前将会回调该方法

Void onStartCommand(Intent intentint flagsint startId):每次客户端调用startService(Intent intent)方法启动该Service时都会回调该方法

Boolean onUnbind(Intent intent):当该Service上绑定的所有客户端都断开连接时将会回调该方法

Android系统中运行Service有如下两种方式:

1>通过ContextstartService()方法:通过该方法启用Service,访问者与Service之间没有关联,Service和访问者之间无法进行通信、数据交换。即使访问者退出了,Service仍然运行。

2>通过ContextbindService()方法:使用该方法启用Service,访问者与Service绑定在了一起,访问者一旦退出,Service也就终止。bindService()方法的完整方法签名为:bindService(Intent serviceServiceConnection connint flags),该方法的三个参数:

Service:该参数通过Intent指定要启动的Service

Conn:该参数是一个ServiceConnection对象,该对象用于监听访问者与Service之间的连接情况。当访问者与Service之间连接成功时将回调ServiceConnection对象的onServiceConnected(ComponentName nameIBinder service)方法;当Service所在的宿主进程由于异常中止或其他原因终止,导致该Service与访问者之间断开连接时回调该ServiceConnection对象的onServiceDisconnected(ComponentName name)方法。但如果当调用者主动通过unBindService()方法断开与Service的连接时,ServiceConnection对象的onServiceDisconnected(ComponentName name)方法并不会被调用。

Flags:指定绑定时是否自动创建Service(如果Service还未创建)。该参数可指定为0(不自动创建)或BIND_AUTO_CREATE(自动创建)

Service生命周期还有一种特殊情形,如果Service已由某客户端通过startService()方法启动了,接下来其他客户端再调用bindService()方法来绑定该Service后,再调用unbindService()方法解除绑定,最后又调用了bindService()方法再次绑定Service,这时系统只是把Service内部IBinder对象传给Activity,并不会把该Service生命周期完全“绑定”到该Activity,因而当Activity调用unBindService()方法取消与该Service的绑定时,也只是切断该ActivityService之间的关联,并不能停止该Service组件,更不会回调onDestroy()方法。这个过程所触发的生命周期如右:onCreate()→onStartCommand()→onBind()→onUnbind()[重写该方法时返回了true]onRebind()。如果希望onRebind()方法被回调,除了需要该Service是由ActivitystartService()方法启动之外,还需要Service子类重写onUnbind()方法时返回true

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

iOS UITableView一些基础知识 - 2015-03-28 20:03:14

打开UIViewController.h // //  RootViewController.h //  Lesson09TableView // //  Created by Dubai on 14-9-26. //  Copyright (c) 2014 年 Dubai All rights reserved. // #import UIKit/UIKit.h //遵循一下代理 @interface RootViewController : UIViewController UITableViewDa

Android BitmapDrawable()的使用 - 2015-03-28 20:03:09

查看源码 BitmapDrawable.java 。 BitmapDrawable 有若干个构造方法。 New BitmapDrawable(Bitmap bitmap) 是早期的一个构造方法,在 android 4.0 已经过时 , 部分代码如下: this(new BitmapState(bitmap), null); 而 google 提倡使用 new BitmapDrawable(Bitmap bitmap,Resources res) ,其部分代码如下: this(new BitmapState
在cocos2dx版本中使用视频播放器的话 需要以下步骤 1、在写一个.mm的文件 我这里的mm叫 IOSPlayVedio这个 头文件定义这个 static void playOnLineVideo4IOS(char *pszVideoUrl); .mm里面写 void IOSPlayVedio::playOnLineVideo4IOS(char *pszVideoUrl) {     NSString * strVideo = [NSString stringWithUTF8String:pszVid
3月起要求关闭所有App内的检查更新功能,苹果App Store将向用户自动提示更新,新提交审核版本如果保留检查更新入口审核时将被拒绝,请各产品团队重点关注。 10.6 - Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple sets a high bar. I
    从1月份Google发布的16个关于性能优化的系列视频起,这段时间在各大社区都有看到很多优秀的关于优化系列的文章。有分析了性能产生的原因、有分享如何优化我们的应用、有介绍有哪些工具可以帮助我们检测性能问题。     其中 在关于一些系统性能调优工具里有介绍到工具之一:TraceView      TraceView 是 Android 平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到某个函数方法method的执行耗时时间。     因为小吕之前
关注finddreams博客,一起分享,一起进步: http://blog.csdn.net/finddreams/article/details/44678171 做为我们日常使用最多的APP,手机QQ的每一次UI界面与操作习惯的改变都牵动着我们每一个用户的心。当然手Q的开发团队也认识到这个问题,所以在每次升级时都会做到整体风格的一致性,并和IOS版本保持一致的风格体验。 记得之前有一次微信版本更新,Android版本与IOS版本的界面和操作习惯出现了非常大的不一致,引起了很多微信用户的不满,于是下个A

Ubuntu OS上的QML应用框架 - 2015-03-28 11:03:18

在我们编写QML应用的时候,我们有时事先需要来考虑我们怎么使用一个好的框架来完成我们的应用。我们的应用有多少个页面,页面之间的导航到底是怎么样子的。这个对于我们一开始来设计我们的应用来说非常中要。在这篇文章中,我们来介绍如何在上层来设计我们的应用框架。 1)使用tab来创建一个平面的导航应用 我们可以使用我们的Ubuntu SDK来创建一个最基本的叫做TabApp的应用:       这样我们就生成了我们的一个最基本的应用。我们把应用的宽度和高度设为如下的值: width: units.gu(50) he

上位机软件需求说明书100元 - 2015-03-28 10:03:48

上位机软件需求说明书 设备搜索指令        PC机器通过串口发送 BRS R        主机将搜索到的所有蓝牙设备名称发送给PC机器,发送格式为“        BRSR”name”\n 例如,现在有三个蓝牙设备“AMOMCU_1”、“AMOMCU_1”、“AMOMCU_1 “、接收该这令后,串口返回数据:        BRS R ”AMOMCU_1”        BRS R ”AMOMCU_2”        BRS R ”AMOMCU_3” 设备配对指令 PC机器通过串口发送 BRS C

android开发常用命令总结 - 2015-03-28 10:03:29

1.编译工程     进入工程目录,简称为project,执行ant debug,这是创建编译版本;也可以执行ant release,创建发布版本,但这个版本必须要有签名。 2. 安装工程     ant debug install,安装时要制定安装哪个版本。注意要进入到工程目录下执行该语句。 3. 启动android模拟器     emulator -avd av,av是模拟器的名字 4. 列出所有的模拟器     android list avd,那么如果想看有哪些模拟器呢,就是使用这个命令啦。 5.
看下日志,报了一个错误,大致原因是找不到so文件。该错误是在模拟器中运行产生的,真机运行并不会出现。 经询问,该原因是我启动的模拟器是x86结构的,涉及到底层的东西需要使用arm结构的模拟器,所以不是程序出了问题,而是模拟器的问题,新建一个arm结构的模拟器就不会报该错误了。然而在windows下启动一个arm结构的模拟器需要花费很长时间,所以现实中涉及到这方面的东西,还是使用真机吧,当然还有另一种选择,使用linux进行开发吧,在linux下模拟器的启动速度大大加快了,由于自己电脑是windows+ub