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 중국어 웹사이트의 기타 관련 기사를 참조하세요!