समस्या AsyncTask के अंदर runOnUiThread है। आपको अपवाद मिल रहा है क्योंकि आप UI थ्रेड को बहुत लंबे समय से बांध रहे हैं। AsyncTask का उपयोग करना सही बात है, लेकिन आप इसके भीतर से runOnUiThread को कॉल कर रहे हैं, जिसका कोई मतलब नहीं है क्योंकि यह अब अतुल्यकालिक नहीं है।
- thedoInBackground() के भीतर से इसके रनऑनयूआई थ्रेड भाग को हटा दें।
- उन मानों को रखें जिन्हें आप स्क्रीन पर प्रदर्शित करना चाहते हैं async कार्य के सदस्यों के रूप में या परिणाम टेम्पलेट परम के रूप में।
- सेटटेक्स्ट कॉल को पोस्टएक्सक्यूट में रखें, क्योंकि वह यूआईथ्रेड पर चलता है।
कुछ इस तरह:
/**
* Background Async Task to Get complete person details
* */
class CheckLogin extends AsyncTask<String, String, String> {
JSONArray productObj;
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AndroidPHPConnectionDemo.this);
pDialog.setMessage("Loading person details. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
/**
* Getting person details in background thread
* */
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("pid", pid));
// getting person details by making HTTP request
// Note that person details url will use GET request
JSONObject json = jsonParser.makeHttpRequest(
url_check_login, "GET", params);
// check your log for json response
Log.d("Single person Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received person details
productObj = json
.getJSONArray(TAG_PERSON); // JSON Array
}
else {
// product with pid not found
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once got all details
if ( productObj != null ) {
// get first product object from JSON Array
JSONObject person = productObj.getJSONObject(0);
et.setText(person.getString(TAG_NAME));
pass.setText(person.getString(TAG_pass));
Log.e("success in login", "SUCCESS IN LOGIN");
}
pDialog.dismiss();
}
}