gpt4 book ai didi

java - 如何等待 requestLocationUpdates() 回调 Intent 完成?

转载 作者:行者123 更新时间:2023-11-30 00:20:51 24 4
gpt4 key购买 nike

我想等待FusedLocationProviderClient.requestLocationUpdates()中的回调 Intent 完成。带超时的 while 循环是最好的解决方案吗?下面是一个示例,没有超时。

通常我会使用 startWakefulService()等待异步服务完成,但我不知道如何将它与 requestLocationUpdates() 一起使用。

Task t = flpc.requestLocationUpdates(locationRequest, pe);
while (! t.isSuccessful()) {
Log.v(TAG, "Waiting for result...");
}

最佳答案

如果你对 RxJava/RxAndroid 有点熟悉,你可以将你的方法调用包装在一个 Observable 中(或者 Callable,Single,任何你认为最好的),在另一个线程而不是 UI 上运行它,然后一旦你有您的方法的结果是您在主线程上收到它,并用它做任何您想做的事。

在代码中它看起来像这样:

Observable.fromCallable(() -> flpc.requestLocationUpdates(locationRequest, pe))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(task -> onLocationUpdatesSuccess(task), throwable -> Log.e(TAG, throwable.getMessage()));

否则另一种解决方案是将您的方法包装在 AsyncTask 中,例如,您最终会得到这样的结果:

    new AsyncTask<Void, Void, Task>() {
@Override
protected Task doInBackground(Void... params) {
return flpc.requestLocationUpdates(locationRequest, pe);
}

@Override
protected void onPostExecute(Task task) {
onLocationUpdatesSuccess(task)
}
}.execute();

关于java - 如何等待 requestLocationUpdates() 回调 Intent 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46313059/

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