java – Android如何在继续之前等待代码完成

java – Android如何在继续之前等待代码完成,第1张

概述我有一个名为hostPhoto()的方法;它基本上将图像上传到网站并检索链接. 然后我有另一种方法将链接发布到网站. 现在我使用这种方法的方式是这样的: String link = hostPhoto(); //returns a link in string formatpost(text+" "+link); // posts the text + a link. 我的问题是… hostP 我有一个名为hostPhoto()的方法;它基本上将图像上传到网站并检索链接.
然后我有另一种方法将链接发布到网站.

现在我使用这种方法的方式是这样的:

String link = hostPhoto(); //returns a link in string formatpost(text+" "+link); // posts the text + a link.

我的问题是… hostPhoto()需要几秒钟来上传和检索链接,
我的程序似乎不等待并继续发布,因此我将链接保留为null,

无论如何,我可以让它首先获得链接…然后发布?
喜欢某种onComplete?或类似的东西..
我认为上面的方法可以工作,但通过做Log.i,似乎链接在一秒左右后返回到字符串.

更新:这是我的问题的更新进度,我使用AsyncTask作为通知,但Log.i的错误输出显示urllink为空…这意味着从hostphoto请求的链接永远不会回来的时间为日志. .

更新2:最终工作!问题是hostPhoto()中的线程,有人可以为我提供一个探索,为什么该线程会导致这个?
感谢所有回复的人.

private class myAsyncTask extends AsyncTask<VoID,VoID,VoID> {    String urllink;    String text;    public myAsyncTask(String txt){        text=txt;    }    @OverrIDe    protected VoID doInBackground(VoID... params) {        urllink=hostPhoto();        //Log.i("linked",urllink);        return null;    }    @OverrIDe    protected voID onPostExecute(VoID result) {        try {            Log.i("Adding to status",urllink);            mlin.updateStatus(text+" "+urllink);            Log.i("Status:",urllink);        } catch (Exception e) {            // Todo auto-generated catch block            e.printstacktrace();        }    }}

hostPhoto()执行此 *** 作:

String link;  new Thread(){                @OverrIDe                public voID run(){                    HostPhoto photo = new HostPhoto(); //create the host class                    link= photo.post(filepath); // upload the photo and return the link                    Log.i("link:",link);                }            }.start();
解决方法 你可以在这里使用AsyncTask,

AsyncTask

通过使用它你可以执行代码

hostPhoto()

在doInBackground()中然后执行代码

发布(文字“”链接);

在onPostExecute()方法中,这将是您的最佳解决方案.

您可以使用此模式编写代码

private class MyAsyncTask extends AsyncTask<VoID,VoID>{    @OverrIDe    protected VoID doInBackground(VoID... params) {        hostPhoto();        return null;    }   @OverrIDe   protected voID onPostExecute(VoID result) {        post(text+" "+link);    } }

并且可以使用执行它

new MyAsyncTask().execute();
总结

以上是内存溢出为你收集整理的java – Android如何在继续之前等待代码完成全部内容,希望文章能够帮你解决java – Android如何在继续之前等待代码完成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1148190.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存