将侦听器转换为Future API

时间:2018-12-05 00:38:12

标签: android broadcastreceiver future android-thread

以下代码使用SettableFuture将Firebase侦听器API转换为未来版本:

private SettableFuture<InstanceIdResult> getId(@NonNull Activity activity) {
    future = SettableFuture.create();

    FirebaseInstanceId
            .getInstance()
            .getInstanceId()
            .addOnSuccessListener(activity, new OnSuccessListener<InstanceIdResult>() {
                @Override
                public void onSuccess(InstanceIdResult instanceIdResult) {
                    future.set(instanceIdResult)
                }
            })
            .addOnFailureListener(activity, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {

                    future.setException(e);
                }
            });
}

要获取我仅使用的ID:

getIdAsync(activity).get();

它工作正常,但是如果我从BroadcastReceiver事件处理程序内部调用它,则会挂起该接口。

即使我使用runOnUiThread Activity方法从UI线程调用它,它也会挂起。

0 个答案:

没有答案