gpt4 book ai didi

android - 从 intentservcie 回调到 jobservice

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:36 25 4
gpt4 key购买 nike

我有一个触发 Jobservice 的 onStartjob 的作业调度程序。在 onStartJob 中,我启动了一个 intentservice 来完成这项工作。工作完成后,我希望 intentservice 对 jobservice 进行回调,以便可以调用 onjobfinished。如何回调 JobService?

最佳答案

您可以在 onStartJob() 方法中创建 BroadcastReceiver 并将其注册到您的 Jobservice 中,使用一些 ACTION 常量(例如 ACTION_DOWNLOAD_FINISHED) .此接收器会将所有工作委托(delegate)给 onJobFinished() 方法:

public static final String ACTION_DOWLOAD_FINISHED = "actionDownloadFinished";

private BroadcastReceiver downloadFinishedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this); //Unregister receiver to avoid receiver leaks exception
onJobFinished();
}
};

public void onStartJob() {
IntentFilter filter = new IntentFilter(ACTION_DOWNLOAD_FINISHED);
//Use LocalBroadcastManager to catch the intents only from your app
LocalBroadcastManager.getInstance(this).registerReceiver(downloadFinishedReceiver , filter);

//other job starting stuff...
}

然后,在 Intent 服务结束其工作后,您可以使用 ACTION_DOWNLOAD_FINISHED 操作发送广播 Intent:

// ...downloading stuff
Intent downloadFinishedIntent = new Intent(Jobservice.ACTION_DOWNLOAD_FINISHED);
//Use LocalBroadcastManager to broadcast intent only within your app
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

当 Intent 服务的作业完成时,它会发送广播 Intent ,该 Intent 被在作业服务中注册的接收器捕获。 Receiver 然后调用 onJobFinished() 方法。

您可以在此处找到详细信息:https://developer.android.com/training/run-background-service/report-status.html

关于android - 从 intentservcie 回调到 jobservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647733/

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