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();

questionAnswers(5)

yourAnswerToTheQuestion