【发布时间】:2011-11-01 06:30:15
【问题描述】:
我有一个方法叫hostPhoto();它基本上将图像上传到站点并检索链接。
然后我有另一种方法可以将链接发布到网站。
现在我使用这个方法的方式是这样的:
String link = hostPhoto(); //returns a link in string format
post(text+" "+link); // posts the text + a link.
我的问题是...hostPhoto() 需要几秒钟来上传和检索链接,
我的程序似乎没有等待并继续发布,因此我留下的链接为空,
无论如何我可以让它先获得链接......然后发布? 像某种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();
【问题讨论】:
-
您应该发布更多代码,尤其是
hostPhoto()的内容,因为您描述的行为是非标准的。 -
AsyncTask不能解决这个问题,因为hostPhoto()甚至不会阻塞线程。就像提到的 atc 一样,您需要从hostPhoto()发布代码。 -
hostPhoto代码已更新
-
更新 2:终于成功了!问题是hostPhoto()中的线程,有人可以解释为什么该线程会导致这种情况吗?感谢所有回复的人。
-
既然 AsyncTask 已被弃用,我们现在应该使用什么?
标签: java android hyperlink android-asynctask