Android como esperar o código terminar antes de continuar
Tenho um método chamadohostPhoto()
; basicamente carrega uma imagem em um site e recupera um link. Então, tenho outro método para postar o link em um site.
Agora, como estou usando esse método é assim:
String link = hostPhoto(); //returns a link in string format
post(text+" "+link); // posts the text + a link.
Meu problema é ... que ohostPhoto()
leva alguns segundos para carregar e recuperar o link, meu programa parece não esperar e continuar postando; portanto, fico com o link como nulo,
Existe alguma maneira que eu poderia fazê-lo obter o link primeiro ... e depois postar? como algum tipo de onComplete? ou algo assim .. pensei que meu método acima funcionaria, mas ao fazer o Log.i, parece que o link é retornado para a string depois de um segund
UPDATE: Este é o progresso das atualizações no meu problema, estou usando um AsyncTask conforme informado, mas o erro do Log.i mostra o urlLink como um nulo ... isso significa que o link solicitado da hostphoto nunca voltou intime para o Logs ..
UPDATE 2: FINALMENTE FUNCIONA! O problema era o Thread dentro do hostPhoto (). Alguém poderia me fornecer uma explicação sobre por que esse thread causaria isso? Obrigado a todos que responderam
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 () faz o seguinte:
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();