android 开发细节,Android开发的小细节

本文详细介绍了Android开发中Service的启动模式,包括隐式启动Activity、Service的生命周期及不同启动模式的区别,如START_NOT_STICKY、START_REDELIVER_INTENT和START_STICKY。同时,还探讨了广播接收者相关的问题。对于Service的启动和停止,以及Intent在Service中的作用进行了深入解析。
摘要由CSDN通过智能技术生成

layout: post

title: Android开发的小细节

categories: blog

date: 2015-06-10

tags: [Android]

category: Android

description: Android开发过程的小笔记,细节,需要注意的地方

Intent隐式启动

Intent隐式启动Activity时必须在指定

否则异常ActivityNotFoundException

Service调用过程

如果 Service 组件是执行长时间运行的操作,则一般采用启动模式。通过调用应用组件对象(如 Activity)的 startService 方法将启动一个 Service 对象实例。如果当前指定的Service 实例没有被创建,则会调用 Service 的 onCreate()方法来创建一个实例;否则直接调用 Service 的 onStartCommand()方法来运行 Service。。因此,Service 的 onStartcommand()方法

可能会重复调用多次。所以在 onStartcommand()方法中要注意线程同步的问题。采用启动模式的 Service 一般持续执行一个单一的操作,而且并不会向调用者返回任何结果

如果 Servise 组件提供一种封装的功能供其他组件使用,则一般采用绑定模式。通过调用应用组件对象的 bindService 方法启动 Service 对象实例,如果当前没有指定的 Service 实例被创建,则该方法会调用 Service 的 onCreate()方法来创建一个实例;实例启动后,将调用 onBind()方法。onBind 将返回给客户端一个 IBinder 接口实例,IBinder 允许客户端回调Service 的方法,比如得到 Service 运行的状态或其他操作。只要连接建立, Service 就会一直运行(不管客户是否保留 Service 的 IBinder 的引用)。通常 IBinder 是一个使用 AIDL 写成的复杂接口。

521669242.png

QQ截图20150607192646.png

START_NOT_STICKY:如果Sevice在启动后,被kill掉,并且没有新启动的Intent传给它,那么将Service移出启动状态并且不重新生成,知道再次显示调用Context.startService。适用场景:网上下载数据。

START_REDELIVER_INTENT:如果Service进程在启动后kill掉,那么它将会被重启,并且最后传给他的Intent通过onStartCommand(Intent ,int,int)会被重新传给他,这种模式保证了传给它Intent一定会被处理完毕,适用场景:关键业务处理。

START_STICKY:如果Service在它启动后被kill掉,那么Android将让Service继续保持started状态,但是不保留启动它的Intent,Android将重新创建Service实例,并执行onStartCommand方法,如果此时没有新的Intent请求,此时Intent的参数是null,这一点要特别注意。适用场景:后台播放音乐。这种运行模式的特点是需要显示启动并停止Service。

广播接收者的相关问题

2802316513.png

QQ截图20150608163423.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值