Android 启动服务并返回值

Android 启动服务并返回值,android,Android,我从OnReceive启动了一些服务,当服务结束时,我希望从该服务中获得一些价值,并返回到OnReceive() 这是我的密码: public class SmsListener extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Objec

我从OnReceive启动了一些服务,当服务结束时,我希望从该服务中获得一些价值,并返回到OnReceive()

这是我的密码:

public class SmsListener extends BroadcastReceiver {

        public void onReceive(Context context, Intent intent) {

            Bundle bundle = intent.getExtras();

            Object messages[] = (Object[]) bundle.get("pdus");
            SmsMessage smsMessage[] = new SmsMessage[messages.length];
            for (int n = 0; n < messages.length; n++) {
                smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
            }

            //show first message
            Toast toast = Toast.makeText(context, "Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
            toast.show();
            String s=smsMessage[0].getMessageBody();
            //START A SERVICE
            Intent serviceIntent = new Intent(context,Lineeq.class);
            serviceIntent.putExtra("message",s); 
            context.startService(serviceIntent);

BroadcastReceiver
将在
onReceive()返回后一两毫秒消失。您无法从服务返回结果,更不用说以某种方式阻止等待它的
onReceive()
方法了


另外,请记住,
abortBroadcast()
是无用的,因为您无法中止SMS广播。

因此,数据将被传送到下一个要传送的服务之后?我想你误解我了。。。我编辑了这个问题(“从该服务中获取一些价值并返回到OnReceive()”。@mynavy:我不知道“it”是什么。
OnReceive()
将返回。
BroadcastReceiver
实例将被框架释放,并最终被垃圾收集。之后,服务将运行并做一些事情。你有什么建议如何处理吗?在android设备收到短信后,我需要他的设备计算一些等式n使用他通过短信获得的数据,它将在后台服务中…啊…我搞错了…我启动的服务将在接收方设备或发送方设备上运行?@mynavy:无论您所问的代码在哪里运行,它都将运行。我猜这是“接收方设备”。将一些工作从接收者委派给服务是可以的。但是,如果你的应用程序依赖于
abortBroadcast()
,那么你的应用程序需要重写以摆脱这种依赖,因为你无法中止安卓4.4+上的短信广播。
            abortBroadcast();


        }


                                  any ideas?
                                  Thanks.