>Java >java지도 시간 >Android AsyncTask에서 부울 값을 반환하는 방법은 무엇입니까?

Android AsyncTask에서 부울 값을 반환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 19:15:18946검색

How to Return Boolean Values from an Android AsyncTask?

AsyncTask에서 부울 값 반환

AsyncTasks는 Android 애플리케이션에서 백그라운드 작업을 수행하는 편리한 방법을 제공합니다. 그러나 부울 값 반환과 같이 AsyncTask의 결과를 메인 스레드에 전달해야 하는 경우 표준 AsyncTask 완료 방법으로는 충분하지 않을 수 있습니다.

원본 코드

AsyncTask를 사용하여 FTP를 설정하는 다음 코드를 고려하세요. 연결:

AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,
            _address, _username, _password, _port);
task.execute();

이 코드에서 AsyncConnectTask는 백그라운드에서 연결 작업을 수행하고 결과를 부울 값으로 반환합니다. 그러나 메인 스레드에는 이 부울 값을 검색하는 메커니즘이 없습니다.

사용자 정의 인터페이스 접근 방식

AsyncTask에서 부울 값을 반환하려면 AsyncTask를 생성하는 활동이나 프래그먼트에서 구현될 사용자 정의 인터페이스입니다. 예:

public interface MyInterface {
    public void myMethod(boolean result);
}

수정된 AsyncTask

그런 다음 AsyncTask를 수정하여 이 인터페이스를 구현하고 결과를 다음을 통해 기본 스레드로 다시 전달할 수 있습니다. 인터페이스:

public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> {

    private MyInterface mListener;

    public AsyncConnectTask(Context context, String address, String user,
        String pass, int port, MyInterface mListener) {
        // ...
        this.mListener  = mListener;
    }

    @Override
    protected Boolean doInBackground(Void... params) {
        // ...
        return result;
   }

    @Override
    protected void onPostExecute(Boolean result) {
        if (mListener != null) 
            mListener.myMethod(result);
    }
}

사용

사용자 정의 인터페이스와 수정된 AsyncTask를 사용하면 작업을 실행하고 메인 스레드에서 부울 결과를 받을 수 있습니다.

AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,
            _address, _username, _password, _port,  new MyInterface() {
    @Override
    public void myMethod(boolean result) {
        if (result == true) {
            // Connection successful
        } else {
            // Connection failed
        } 
    }
});

task.execute();

이 접근 방식을 사용하면 AsyncTasks에서 부울 값을 반환하고 결과를 처리할 수 있습니다. 메인 스레드.

위 내용은 Android AsyncTask에서 부울 값을 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.