У меня есть метод с именем hostPhoto()
;он в основном загружает изображение на сайт и получает ссылку.Затем у меня есть другой способ опубликовать ссылку на веб-сайт.
Теперь я использую этот метод следующим образом:
String link = hostPhoto(); //returns a link in string format
post(text+" "+link); // posts the text + a link.
Моя проблема в том, что ...1007 * требуется несколько секунд, чтобы загрузить и получить ссылку, моя программа, похоже, не ждет и продолжает публиковать, поэтому я оставляю ссылку со значением NULL,
В любом случае, я мог бы сделать так, чтобы она сначала получила ссылку... а потом пост?как какой-то onComplete?или что-то в этом роде ... я думал, что мой метод выше будет работать, но, делая Log.i, кажется, что ссылка возвращается к строке через секунду или около того.
ОБНОВЛЕНИЕ: Это обновление обновлений по моей проблеме, я использую AsyncTask, как сообщается, но ошибка Log.i, показывающая urlLink как ноль ... это означает, что ссылка, запрошенная у hostphoto, никогда не возвращалась вовремя для журналов ..
ОБНОВЛЕНИЕ 2:НАКОНЕЦ РАБОТАЕТ!Проблема была в Thread внутри 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();