我有一个在启动时启动的服务,应该在设备启动时运行。
此服务有一个工作线程,用于在发生特定事件时启动活动(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();
(...)
我该怎么做?
感谢。
答案 0 :(得分:0)
您无法从服务中启动活动并立即获得响应。响应将需要异步返回。有几种方法可以做到这一点:
您的活动可以在startService()
中将响应作为额外回复拨打Intent
。这将导致在服务中调用onStartCommand()
。
活动可以发送包含响应的本地广播Intent
。在这种情况下,服务需要设置BroadcastReceiver
来监听响应。
活动可以绑定到服务并将数据传回@ njzk2建议(虽然这有点复杂)。