Android服务工作线程启动活动并等待响应

时间:2014-01-22 13:54:16

标签: android multithreading android-intent android-service

我有一个在启动时启动的服务,应该在设备启动时运行。

此服务有一个工作线程,用于在发生特定事件时启动活动(QueryActivity)。此活动是通过意图启动的:

private void launchActivity(String msg){
        Intent intent = new Intent(getBaseContext(), QueryActivity.class);
        intent.putExtra("query", msg);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getApplication().startActivity(intent);
    }

活动将显示基于作为额外传递的字符串消息的文本视图。活动还显示两个按钮。我们说YES和NO按钮。用户阅读文本并单击“是”或“否”。

我希望在工作线程内的launchActivity方法之后立即将用户的选择(是或否)发送回服务。

(...)
launchActivity(str);
String YesOrNo = receiveUserChoice();
(...)

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分:0)

您无法从服务中启动活动并立即获得响应。响应将需要异步返回。有几种方法可以做到这一点:

  1. 您的活动可以在startService()中将响应作为额外回复拨打Intent。这将导致在服务中调用onStartCommand()

  2. 活动可以发送包含响应的本地广播Intent。在这种情况下,服务需要设置BroadcastReceiver来监听响应。

  3. 活动可以绑定到服务并将数据传回@ njzk2建议(虽然这有点复杂)。