Mengembalikan Nilai Boolean daripada AsyncTask
AsyncTasks menyediakan cara yang mudah untuk melaksanakan operasi latar belakang dalam aplikasi Android. Walau bagaimanapun, apabila anda perlu menyampaikan hasil AsyncTask kepada urutan utama, seperti mengembalikan nilai boolean, kaedah penyelesaian AsyncTask standard mungkin tidak mencukupi.
Kod Asal
Pertimbangkan kod berikut, di mana AsyncTask digunakan untuk mewujudkan FTP sambungan:
AsyncConnectTask task = new AsyncConnectTask(SiteManager.this, _address, _username, _password, _port); task.execute();
Dalam kod ini, AsyncConnectTask akan melaksanakan operasi sambungan di latar belakang dan mengembalikan hasilnya sebagai nilai boolean. Walau bagaimanapun, tiada mekanisme untuk mendapatkan semula nilai boolean ini dalam urutan utama.
Pendekatan Antara Muka Tersuai
Untuk mengembalikan nilai boolean daripada AsyncTask, anda boleh mencipta antara muka tersuai yang akan dilaksanakan dalam aktiviti atau serpihan yang mencipta AsyncTask. Contohnya:
public interface MyInterface { public void myMethod(boolean result); }
Modified AsyncTask
AsyncTask kemudiannya boleh diubah suai untuk melaksanakan antara muka ini dan menghantar hasilnya kembali ke utas utama melalui antara muka:
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); } }
Penggunaan
Dengan antara muka tersuai dan AsyncTask yang diubah suai, anda boleh melaksanakan tugas dan menerima hasil boolean dalam utas utama:
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();
Dengan menggunakan pendekatan ini, anda boleh mengembalikan nilai boolean daripada AsyncTasks dan memproses keputusan pada utama benang.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Nilai Boolean daripada Android AsyncTask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!