2010-05-14 8 views

답변

35

onPostExecute - UI 스레드에서 실행 또는 publishProgress(); 당신의 doinbackground과

protected void onProgressUpdate(Integer... progress) { 
} 

http://developer.android.com/reference/android/os/AsyncTask.html

+0

나는 토스트를 처리의 중간에 끝내야 만합니다. 내 옵션은 무엇입니까? – Pentium10

+0

onProgressUpdate. 또한 UI 스레드에서 실행되며 Toast는이 질문에 대한 다른 모든 대답이 이보다 낫기 때문에 –

+0

-1 downvoted이어야합니다! – necromancer

19

또한 백그라운드 스레드에서 UI를 조작 할 수 runOnUiThread 방법을 사용할 수 있습니다.

+0

왜 투표가 실패 했습니까? 나는 그가 runOnUiThread를 호출해야한다고 생각한다. –

+1

이 저에게 효과적입니다. getActivivty()를 호출하면됩니다. runOnUiThread (...) – demula

1

배경 스레드에서 토스트를 표시하려면 doInBackground에서 runOnUiThread를 호출해야합니다. 나는 다른 방법이 있다고 생각하지 않는다.

편집 : 나는 그것을 되 찾는다. UI 스레드에서 실행되는 onProgressUpdate를 구현하여 토스트를 표시하고 doInBackground에서 publishProgress를 호출하도록 할 수 있다고 생각합니다.

9

당신은 당신이이 방법을 사용해야합니다 토스트를 사용하려면 : onProgressUpdate()를

protected Integer doInBackground(Void...Params) { 
    int check_point = 1; 
    publishProgress(check_point); 
    return check_point; 
} 

protected void onProgressUpdate(Integer integers) { 
    if(integers == 1) { 
    Toast.makeText(classname.this, "Text", 0).show(); 
} 
19

당신이

runOnUiThread(new Runnable() { 
public void run() { 

    Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show(); 
    } 
}); 
당신이 토스트에 원하는 코드를 추가 표시

doInBackground

내부 토스트 수 있습니다
+0

고마워요! 이것은 내가 찾고 있었던 바로 그 것이다. –

1

토스트를 doInBackground에 표시하려면 AsyncTask의 OnPostExecute 메서드에서 사용할 수 있습니다.

protected void onPostExecute(String file_url) {  
    Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show(); 

    pDialog.dismiss();//dismiss the progress dialouge 
} 
관련 문제