दिलचस्प पोस्ट
क्या html टैग के लिए अपरकेस अक्षरों का उपयोग करना बुरा है? कंटेनर में कोणीय की अनंत स्क्रॉल स्वयं ट्रैकिंग संस्थाओं का उद्देश्य क्या है? जावास्क्रिप्ट की तिथि को सी # अजाक्स द्वारा Java अनुप्रयोग में XML फ़ाइल में पढ़ने का सबसे अच्छा / सरल तरीका क्या है? अजगर में अनुरोधों के साथ "मल्टीपार्ट / फ़ॉर्म-डेटा" कैसे भेजना है? <option> tag के अंदर href लिंक का उपयोग कर MySQL # 1093 – आप एफआरएम क्लॉज में अपडेट के लिए लक्ष्य तालिका 'गेटवे' निर्दिष्ट नहीं कर सकते प्रतिबिंब (जावा) का उपयोग करते हुए मैं एक निजी स्थिर विधि कैसे खोलूं? मैवेन के साथ, मैं अपनी परियोजना के जार और सभी आश्रित जारों के वितरण का निर्माण कैसे कर सकता हूं? पायथन में "ज़ोर देना" का क्या उपयोग है? मैं कैसे पायथन में शब्दकोश के मूल्यों से शब्दकोशों की एक सूची को सॉर्ट कर सकता हूं? चलने योग्य / ड्रैग करने योग्य <div> रेड्यूक्स के साथ प्रतिक्रिया? 'संदर्भ' के मुद्दे के बारे में क्या? आराम एपीआई सर्वश्रेष्ठ अभ्यास: पैरामीटर डाल करने के लिए कहाँ?

मैं एक बुलियन को AsyncTask से कैसे वापस करूँ?

मेरे पास कुछ EditTexts हैं जो एक उपयोगकर्ता एक FTP पते, उपयोगकर्ता नाम, पासवर्ड, पोर्ट और testConnection बटन में प्रवेश करता है। अगर एक कनेक्शन सफलतापूर्वक estabished है यह सच के एक बूलियन मान देता है।

boolean status = ftpConnect(_address, _username, _password,_port); ftpDisconnect(); if (status == true) { Toast.makeText(SiteManager.this, "Connection Succesful", Toast.LENGTH_LONG).show(); } else { Toast.makeText(SiteManager.this, "Connection Failed:" + status, Toast.LENGTH_LONG).show(); } 

विभिन्न एफ़टीपी कार्यों को करने के लिए मैं असिनक टास्क का उपयोग करने के लिए अपना कोड फिर से कर रहा हूं, लेकिन यदि कोई कनेक्शन सफलतापूर्वक बनाया गया है तो मैं बूलियन मान को कैसे वापस कर सकता हूँ?

 testConnection.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { _name = etSitename.getText().toString(); _address = etAddress.getText().toString(); _username = etUsername.getText().toString(); _password = etPassword.getText().toString(); _port = Integer.parseInt(etPort.getText().toString()); AsyncConnectTask task = new AsyncConnectTask(SiteManager.this, _address, _username, _password, _port); task.execute(); // boolean status = ftpConnect(_address, _username, _password, // _port); // ftpDisconnect(); // if (status == true) { // Toast.makeText(SiteManager.this, "Connection Succesful", // Toast.LENGTH_LONG).show(); // savesite.setVisibility(0); // } else { // Toast.makeText(SiteManager.this, // "Connection Failed:" + status, Toast.LENGTH_LONG) // .show(); // } } }); 

और मेरे असिनका टास्क

 public class AsyncConnectTask extends AsyncTask<Void, Void, Void> { private Context mContext; private FTPHelper ftpHelper = new FTPHelper(); private String _address; private String _user; private String _pass; private int _port; ProgressDialog progressDialog; public AsyncConnectTask(Context context, String address, String user, String pass, int port) { mContext = context; _address = address; _user = user; _pass = pass; _port = port; } // declare other objects as per your need @Override protected void onPreExecute() { progressDialog = ProgressDialog.show(mContext, "Please wait for ", "Process Description Text", true); // do initialization of required objects objects here }; @Override protected Void doInBackground(Void... params) { boolean status = ftpHelper.ftpConnect(_address, _user, _pass, _port); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); progressDialog.dismiss(); }; } 

Solutions Collecting From Web of "मैं एक बुलियन को AsyncTask से कैसे वापस करूँ?"

 public interface MyInterface { public void myMethod(boolean result); } 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) { mContext = context; _address = address; _user = user; _pass = pass; _port = port; this.mListener = mListener; } @Override protected Boolean doInBackground(Void... params) { .... return result; } @Override protected void onPostExecute(Boolean result) { if (mListener != null) mListener.myMethod(result); } } AsyncConnectTask task = new AsyncConnectTask(SiteManager.this, _address, _username, _password, _port, new MyInterface() { @Override public void myMethod(boolean result) { if (result == true) { Toast.makeText(SiteManager.this, "Connection Succesful", Toast.LENGTH_LONG).show(); } else { Toast.makeText(SiteManager.this, "Connection Failed:" + status, Toast.LENGTH_LONG).show(); } } }); task.execute(); 

अगर आप पर कॉल करें अपने कोड को myMethod से अंदर कोड UI थ्रेड पर चलेंगे। अन्यथा आपको एक Handler माध्यम से एक रननबल पोस्ट करने की आवश्यकता है

 public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> { @Override protected Boolean doInBackground(Void... params) { .... return true; /* or false */ } @Override protected void onPostExecute(Boolean result) { // result holds what you return from doInBackground } } 

अपने asynctask की तरह घोषित करें

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

तीसरा पैरामीटर परिणाम पैरामीटर है जो कि डोनेब्राउंड द्वारा वापस किया जाता है। (सबसे पहले एक asynctask परम है और दूसरा एक प्रगति पैरामीटर है)

तो पृष्ठभूमि और ओपनोस्टेक्यूक में आपका क्या होगा

 @Override protected Boolean doInBackground(Void... params) { boolean status = ftpHelper.ftpConnect(_address, _user, _pass, _port); return status; } @Override protected void onPostExecute(Boolean result) { // use the result super.onPostExecute(result); progressDialog.dismiss(); }; 

याद रखें कि doInBackground द्वारा दिया जाने वाला मान, onPostExecute द्वारा पैरामीटर के रूप में विलंबित है। इसलिए इसे onPostExecute विधि में उपयोग करें। आप इस पद्धति में भी अपनी UI को अपडेट कर सकते हैं।