繁体   English   中英

如何让我的程序等到任务完成后再继续?

[英]How to make my program wait until a task is finished before continuing?

我需要 firebase 上的图像的 Url/Uri,然后在下一行使用。 它看起来像这样:

Uri uri = storageReference.getDownloadUrl().getResult();
this.doAThing(uri);

问题是我收到一条错误消息,提示“任务尚未完成”。 我如何让它等到任务完成/有没有更好的方法来获取 Uri?

我在我的项目中需要一些类似的概念。 我必须使用内置的 firebase 监听器来获取 URL。

我使用了getDownloadUrl().addOnSuccessListener() ,它返回了一个 URI

这是我的代码片段的一部分:

filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        Log.d("=== link ",uri.toString());

        // Your code
    }
});

文件路径 - 它是引用该文件的 StorageReference Object。

希望这可以帮助。

创建一个界面,通知应用程序 onCompletion 任务然后您开始新任务

interface JobCompletion{

void onCompletion()

}

在实现 JobCompletion 的 class 的 onCompletion 方法中编写第二个任务

或者

您需要调用 AsyncTask.get() 方法来获取结果并等待直到 doInBackground 执行未完成。 但是,如果您不在线程内调用 get 方法,这将冻结主 UI 线程。

要在 UI 线程中返回结果,请按以下方式启动 AsyncTask:

字符串 str_result=new RunInBackGround().execute().get();

或使用没有 get 方法的 AsyncTask 并在 AsyncTask 中调用 onPostExecute 方法,该方法在主 UI 线程上提供您的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM