我在我的Activity中按照以下方式启动服务。服务启动后,我关闭活动。如果我再次启动Activity,我想从服务中收到一些信息。我怎么能这样做?
// Activity
@Override
public void onCreate(Bundle savedInstanceState)
{
// here I want to receive data from Service
}
Intent i=new Intent(this, AppService.class);
i.putExtra(AppService.TIME, spinner_time.getSelectedItemPosition());
startService(i);
// Service
public class AppService extends Service {
public static final String TIME="TIME";
int time_loud;
Notification note;
Intent i;
private boolean flag_silencemode = false;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
time_loud = intent.getIntExtra(TIME, 0);
play(time_loud);
return(START_NOT_STICKY);
}
答案 0 :(得分:2)
现在最简单的解决方案是,恕我直言,使用第三方事件总线,如Square's Otto(使用@Producer
允许活动获取给定类型的最后发送事件)或greenrobot's EventBus(使用粘性事件允许活动获取给定类型的最后发送事件)。
答案 1 :(得分:2)
我建议使用Square的Otto库。
Otto是一种活动总线,旨在解耦您的不同部分 申请,同时仍然允许他们有效沟通。
简单的方法是创建一个总线:
Bus bus = new Bus();
然后你只需发布一个事件:
bus.post(new AnswerAvailableEvent(42));
您的Service
订阅
@Subscribe public void answerAvailable(AnswerAvailableEvent event) {
// TODO: React to the event somehow!
}
然后服务将提供结果
@Produce public AnswerAvailableEvent produceAnswer() {
// Assuming 'lastAnswer' exists.
return new AnswerAvailableEvent(this.lastAnswer);
}