프로그래밍 언어/Android

Android 기본 : UI 스레드에서 코드 실행

Rateye 2021. 9. 3. 10:41
728x90
반응형
질문 : Android 기본 : UI 스레드에서 코드 실행

UI 스레드에서 코드를 실행하는 관점에서 다음과 같은 차이점이 있습니까?

MainActivity.this.runOnUiThread(new Runnable() {
    public void run() {
        Log.d("UI thread", "I am the UI thread");
    }
});

또는

MainActivity.this.myView.post(new Runnable() {
    public void run() {
        Log.d("UI thread", "I am the UI thread");
    }
});

private class BackgroundTask extends AsyncTask<String, Void, Bitmap> {
    protected void onPostExecute(Bitmap result) {
        Log.d("UI thread", "I am the UI thread");
    }
}
답변

그것들은 모두 똑같은 순 효과를 가지지 만 정확히 동일하지는 않습니다.

제 1 및 제 2의 차이는 코드 실행시에 메인 프로그램 스레드에서 발생 될 경우, 첫 번째 (즉 runOnUiThread() )가 실행된다 Runnable 즉시. 두 번째 것 ( post() )은 이미 메인 애플리케이션 스레드에 있더라도 Runnable

BackgroundTask 의 인스턴스를 만들고 실행한다고 가정하면 post() 에 해당하는 양을 수행하기 전에 doInBackground() 를 실행하기 위해 스레드 풀에서 스레드를 가져 오는 데 많은 시간을 낭비합니다. . 이것은 세 가지 중 가장 효율적이지 않습니다. onPostExecute() 사용뿐만 아니라 실제로 백그라운드 스레드에서 수행 할 작업이있는 경우 AsyncTask 사용하십시오.

출처 : https://stackoverflow.com/questions/12850143/android-basics-running-code-in-the-ui-thread
728x90
반응형