【问题标题】:Sending an intent from broadcast receiver to a running service in android将意图从广播接收器发送到android中正在运行的服务
【发布时间】:2010-12-12 05:12:37
【问题描述】:

这是我的广播接收器。

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>

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

【问题讨论】:

    标签: android service android-intent broadcastreceiver


    【解决方案1】:

    理想情况下,您没有正在运行的服务。服务应该只在它们做某事时才在内存中,而且当 SMS 到达时,您的代码可能不会做任何事情。

    话虽如此,您的接收者可以致电startService()。这会将服务的Intent 传递给onStartCommand(),无论它是否已经在运行。理想情况下,您的服务是IntentService,旨在使用命令模式并在处理完命令后关闭。

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

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 2011-11-08
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      相关资源
      最近更新 更多