gpt4 book ai didi

Android - 服务可以报告回调用 Activity 的状态吗

转载 作者:行者123 更新时间:2023-11-29 22:33:02 26 4
gpt4 key购买 nike

当服务到达特定的处理阶段时,有没有一种方法可以让服务向调用 Activity 报告?

例如:考虑一个音乐播放器 Activity,它启动在后台播放的实际音乐作为 Android 服务。当服务到达媒体播放器的 onPrepared 时,我想检测并通知 Activity 。有没有一种方法可以让服务在调用 MediaPlayer 的 onPrepared 时通知调用 Activity,让 Activity 知道音频已准备好并可以播放?

我基本上是在查看是否有解决方法,而不是在 Activity 中使用一个线程,不断地检查服务是否已达到 onPrepared。

谢谢克里斯

最佳答案

我发现最简单的方法是使用支持库中提供的 LocalBroadcast。这是一个例子:

在您的服务中:

String action = "status"; // arbitrary string
private void updateStatus(){
Intent intent = new Intent(action);
// fill the intent with other variables you want to pass
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}

在您的 Activity 中:

@Override
protected void onCreate(Bundle savedInstanceState) {
LocalBroadcastManager.getInstance(context).registerReceiver(receiver,new IntentFilter(action));
}


@Override
protected void onResume() {
LocalBroadcastManager.getInstance(context).registerReceiver(receiver,new IntentFilter(action));
}

@Override
protected void onPause() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(receiver);
}

String action = "status";
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if(intentAction.equals(action){
// Process the status from the service
}
}
};

关于Android - 服务可以报告回调用 Activity 的状态吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com