首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

【Android】BroadcastReceiver发送intent给service可能activity

2012-09-29 
【Android】BroadcastReceiver发送intent给service或者activityBroadcastReceiver:对象的生命周期不超过5s,

【Android】BroadcastReceiver发送intent给service或者activity

BroadcastReceiver:对象的生命周期不超过5s,如果进行耗时工作,通过开线程,可以通过发送Intent给Activity或Service,由??Activity或者Service来完成。
1:用来已不接收意图的(Intent),广播Intent的发送时通过调用Context.sendBroadcast()\Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现的。
注:Context.startActivity(Intent) ------>只能被一个组件(Activity/Service)接收
Context.sendBroadcast(Intent) ------>能被订阅了此意图的所有广播接收者接收
2:第一步:继承BroadcastReceiver,并重写onReceive方法。
??public class IncominSMSReceiver extends BroadcastReceivee{
? ?@Override
? ?public void onReceive(Context context,Intent intent)
? ? }
3:第二步:订阅感兴趣的广播Intent,订阅方法有两种:
??第一种:使用代码进行订阅:
??IntentFilter filter=new IntentFilter("android.provider.Telephony.SMS_RECEIVD");
??IncomingSMSReceiver receiver=new IncomingSMSReceiver();
??registerReceiver(receiver,filter);
??第二种:在AndroidManifest.xml文件中中的<application>节点里进行订阅:
??<receiver android:name=".IncomingSMSReceiver">
? ?<intent-filter>
? ? <action android:name="android.provider.Telephony.SMS_RECEIVER"/>
? ?</intent-filter>
??</receiver>
Service:
1:第一步:继承Service类
??public classs SMSService extends Service{}
2:第二步:在AndrodManifest.xml文件中的<application>节点里对服务进行配置。
??<service android:name=".SMSService">
注:服务不能自己运行。需要通过调用Context.startService()或Context.bindService
startService():调用者与服务之间没有关联。系统先 调用服务的onCreate()方法,接着调用onStart()方法。多次调用startService()方法并不会导致服务多次被创建,但会多次调 用onStart()方法。并用Context.stopService()方法结束服务,服务结束时调用onDestroy()方法。
bindService():调用者与服务绑定在一起“不求同时生,必须同时死。”系统调用服务的onCreate方法接着调用onBind()方法。这 时调用者与服务绑定一起调用者退出时先调用服务的onUnbind()方法,接着调用onDestroy()方法。多次调用bindService()方 法并不会导致调用者与服务多次被绑定。

热点排行