从广播接收器向android中的正在运行的服务发送意图

从广播接收器向android中的正在运行的服务发送意图,第1张

概述这是我的广播接收器.publicclassSmsReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextctx,Intentintent){Log.d(DEBUG_TAG,SmsReceiver.class.getSimpleName()+"action:"+intent.getAction());

这是我的广播接收器.

public class SmsReceiver extends broadcastReceiver {    @OverrIDe    public voID onReceive(Context ctx, Intent intent) {            Log.d(DEBUG_TAG, SmsReceiver.class.getSimplename()+ " action: " + intent.getAction());            // here is codes for sending intent to my running service     }  }

这是我的清单xml文件中的广播接收器和服务节点.

<service androID:name=".SMSGatewayService" /><receiver androID:name=".SmsReceiver">    <intent-filter>         <action androID:name="androID.provIDer.Telephony.SMS_RECEIVED" />    </intent-filter></receiver>

如何将广播接收器的意图发送到我正在运行的服务.
提前致谢.

解决方法:

理想情况下,您没有正在运行的服务.服务只应在他们正在做某事时才在内存中,并且当SMS到达时你的代码不会做任何事情.

话虽这么说,您的接收器可以调用startService().这会将Intent传递给服务的onStartCommand(),无论它是否已经运行.理想情况下,您的服务是一个IntentService,旨在使用命令模式,并在处理命令时关闭.

此外,由于SMS消息可以在设备处于睡眠状态时到达,因此您可能需要使用WakeLock来确保设备保持清醒足够长的时间以便控制传递到服务并使服务能够执行它正在执行的任何 *** 作.一种方法是使用我的WakefulIntentService,它包装了IntentService WakeLock模式.

总结

以上是内存溢出为你收集整理的从广播接收器向android中的正在运行的服务发送意图全部内容,希望文章能够帮你解决从广播接收器向android中的正在运行的服务发送意图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1097268.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存