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()方 法并不会导致调用者与服务多次被绑定。
分享到:
相关推荐
- **使用BroadcastReceiver**:`Service`通过发送Broadcast,`Activity`注册BroadcastReceiver来接收数据。`Service`创建一个`LocalBroadcastManager`实例,发送广播;`Activity`在需要接收数据的地方注册Receiver...
在Android应用开发中,Intent、Activity、Service以及BroadcastReceiver是四大核心组件,它们构成了Android应用程序的基本骨架。下面将详细介绍这四个关键概念。 1. **Intent(意图)**: Intent在Android中扮演着...
在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,我们可能需要Service与Activity之间进行数据传递,例如本例中...
为了将数据从Service传递给Activity,我们可以使用Intent的extras字段携带信息。在Service中设置BroadcastIntent的extras,然后在Activity的BroadcastReceiver中读取这些数据。这种方式确保了数据的安全传输。 此外...
1. **BroadcastReceiver**: 创建一个BroadcastReceiver作为中介,Service通过发送BroadcastIntent更新数据,各个Activity注册这个Receiver接收并处理这些广播。这种方式简单但可能导致性能问题,因为广播会触发所有...
当Service需要向Activity发送消息时,有多种方法可以实现: 1. **使用Intent**: 可以通过发送Broadcast Intent的方式,让Service广播一条消息,然后在Activity中注册一个BroadcastReceiver来接收这个消息。首先在...
Intent不仅用于启动Activity,还能启动Service、BroadcastReceiver等。本资源包含的是关于Android Activity与Intent相关的Java源代码,非常适合学习Android开发的同学参考。 首先,我们来看Activity。Activity是一...
此外,Intent还可以用于服务(Service)启动,广播接收器(BroadcastReceiver)的激活等场景,进一步增强了组件间的通信能力。例如,当手机接收到新的消息时,系统会发出一个隐式Intent,广播接收器可以监听到这个...
本主题将深入探讨如何使用Service以及BroadcastReceiver来实现特定的功能:当Service检测到某个函数的状态变化时,通过Broadcast发送通知,进而启动一个新的Activity。 首先,让我们了解`Service`。在Android中,...
首先,Intent是一个抽象的概念,代表了应用中的一个动作,它可以携带数据,用于启动活动(Activity)、服务(Service)或者执行其他操作。Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,...
在Android开发中,Intent和BroadcastReceiver是两个至关重要的组件,它们构成了Android系统中不同组件间通信的核心机制。Intent用于在应用程序的不同组件之间传递消息,而BroadcastReceiver则是一种响应这些消息的...
Intent不仅可以用于启动一个新的Activity,还可以启动Service、BroadcastReceiver,甚至可以传递数据。本资料"Android源码——Intent切换.zip"很可能是关于Intent在Android应用开发中的详细解析,包括Intent的创建、...
它不仅用于启动Activity,还可以启动Service、BroadcastReceiver,甚至用于在应用程序之间共享数据。熟悉Intent的工作原理和使用方法,将有助于提高开发效率并优化应用性能。 总结来说,Intent是Android开发中的...
在`BroadcastReceiver`的`onReceive()`方法中,你可以进行一些轻量级的操作,如更新数据、发送通知或者启动服务。但避免在此处执行耗时操作,因为这会阻塞广播的分发,影响系统性能。 最后,了解`BroadcastReceiver...
此外,我们还可以通过`PendingIntent`将BroadcastReceiver与其他组件(如Activity或Service)关联,或者使用LocalBroadcastManager进行应用内的广播。 在`BroadcastReceiverDemo`项目中,你可能看到了一个完整的...
Intent是一个意图对象,它表达了应用程序想要执行的动作,比如打开一个网页、发送短信或者启动一个新的Activity。Intent包含了动作(Action)、数据(Data)、类别(Category)、额外数据(Extras)等关键元素。 2...
Intent主要用于启动活动(Activity)、服务(Service)或者广播接收器(BroadcastReceiver),并传递数据和指令。本资源包“Android应用源码之Intent_Intent.zip”应该包含了关于Intent使用的一些示例代码和解析,...
在Android操作系统中,Intent是一种强大的组件间通信机制,它用于启动其他应用程序组件,如Activity、Service,甚至BroadcastReceiver。Intent不仅能够传递数据,还能在应用的不同部分之间建立连接,是Android开发中...
在Service中,当需要发送数据到Activity时,创建Intent并指定广播动作: ```java Intent intent = new Intent("com.example.SERVICE_TO_ACTIVITY_BROADCAST"); // 添加要传递的数据 intent.putExtra("key", ...
- **BroadcastReceiver**:如果使用LocalBroadcastManager,Activity中会注册一个BroadcastReceiver来接收Service发送的广播。 在实际项目中,选择哪种通信方式取决于具体需求。例如,如果只是简单地启动和停止...